lua: json: add method to merge json containers
This commit is contained in:
@@ -167,6 +167,20 @@ push_luajson (lua_State *L, WpSpaJson *json, gint n_recursions)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
spa_json_merge (lua_State *L)
|
||||||
|
{
|
||||||
|
WpSpaJson *a = wplua_checkboxed (L, 1, WP_TYPE_SPA_JSON);
|
||||||
|
WpSpaJson *b = wplua_checkboxed (L, 2, WP_TYPE_SPA_JSON);
|
||||||
|
|
||||||
|
WpSpaJson *merge = wp_json_utils_merge_containers(a, b);
|
||||||
|
if(!merge)
|
||||||
|
luaL_error (L, "only Json container merge supported");
|
||||||
|
|
||||||
|
wplua_pushboxed (L, WP_TYPE_SPA_JSON, merge);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spa_json_parse (lua_State *L)
|
spa_json_parse (lua_State *L)
|
||||||
{
|
{
|
||||||
@@ -340,6 +354,7 @@ static const luaL_Reg spa_json_methods[] = {
|
|||||||
{ "is_array", spa_json_is_array },
|
{ "is_array", spa_json_is_array },
|
||||||
{ "is_object", spa_json_is_object },
|
{ "is_object", spa_json_is_object },
|
||||||
{ "parse", spa_json_parse },
|
{ "parse", spa_json_parse },
|
||||||
|
{ "merge", spa_json_merge },
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -240,3 +240,26 @@ assert (type (val.args) == "table")
|
|||||||
assert (type (val.args.test) == "table")
|
assert (type (val.args.test) == "table")
|
||||||
assert (val.args.test[1] == 0)
|
assert (val.args.test[1] == 0)
|
||||||
assert (val.args.test[2] == 1)
|
assert (val.args.test[2] == 1)
|
||||||
|
|
||||||
|
json = Json.Array { "foo" }
|
||||||
|
json2 = Json.Array { "bar" }
|
||||||
|
json = json:merge(json2)
|
||||||
|
assert (json:is_array())
|
||||||
|
val = json:parse ()
|
||||||
|
assert (val[1] == "foo")
|
||||||
|
assert (val[2] == "bar")
|
||||||
|
|
||||||
|
table = {}
|
||||||
|
table["1"] = 1
|
||||||
|
table["2"] = 2
|
||||||
|
json = Json.Object (table)
|
||||||
|
table = {}
|
||||||
|
table["3"] = 3
|
||||||
|
table["4"] = 4
|
||||||
|
json2 = Json.Object (table)
|
||||||
|
json = json:merge(json2)
|
||||||
|
val = json:parse ()
|
||||||
|
assert (val["1"] == 1)
|
||||||
|
assert (val["2"] == 2)
|
||||||
|
assert (val["3"] == 3)
|
||||||
|
assert (val["4"] == 4)
|
||||||
|
Reference in New Issue
Block a user