57 lines
		
	
	
		
			741 B
		
	
	
	
		
			Lua
		
	
			
		
		
	
	
			57 lines
		
	
	
		
			741 B
		
	
	
	
		
			Lua
		
	
local sproto = require "sproto"
 | 
						|
local print_r = require "print_r"
 | 
						|
 | 
						|
local sp = sproto.parse [[
 | 
						|
.foobar {
 | 
						|
	.nest {
 | 
						|
		a 1 : string
 | 
						|
		b 3 : boolean
 | 
						|
		c 5 : integer
 | 
						|
	}
 | 
						|
	a 0 : string
 | 
						|
	b 1 : integer
 | 
						|
	c 2 : boolean
 | 
						|
	d 3 : *nest(a)
 | 
						|
 | 
						|
	e 4 : *string
 | 
						|
	f 5 : *integer
 | 
						|
	g 6 : *boolean
 | 
						|
	h 7 : *foobar
 | 
						|
}
 | 
						|
]]
 | 
						|
 | 
						|
local obj = {
 | 
						|
	a = "hello",
 | 
						|
	b = 1000000,
 | 
						|
	c = true,
 | 
						|
	d = {
 | 
						|
		{
 | 
						|
			a = "one",
 | 
						|
			-- skip b
 | 
						|
			c = -1,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			a = "two",
 | 
						|
			b = true,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			a = "",
 | 
						|
			b = false,
 | 
						|
			c = 1,
 | 
						|
		},
 | 
						|
	},
 | 
						|
	e = { "ABC", "", "def" },
 | 
						|
	f = { -3, -2, -1, 0 , 1, 2},
 | 
						|
	g = { true, false, true },
 | 
						|
	h = {
 | 
						|
		{ b = 100 },
 | 
						|
		{},
 | 
						|
		{ b = -100, c= false },
 | 
						|
		{ b = 0, e = { "test" } },
 | 
						|
	},
 | 
						|
}
 | 
						|
 | 
						|
local code = sp:encode("foobar", obj)
 | 
						|
obj = sp:decode("foobar", code)
 | 
						|
print_r(obj)
 |