From 35fdc59eeec45e19d4cb3389b0e215f381b938f3 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Thu, 17 Jun 2021 17:25:08 +0200 Subject: [PATCH] Add array, map functions --- src/component/json.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/component/json.cpp b/src/component/json.cpp index 34d526f..932b619 100644 --- a/src/component/json.cpp +++ b/src/component/json.cpp @@ -158,6 +158,36 @@ namespace json public: void post_unpack() override { + gsc::function::add("array", [](gsc::function_args args) + { + const auto array = gsc::make_array(); + + for (auto i = 0; i < args.size(); i++) + { + gsc::add_array_value(array, args[i]); + } + + return scripting::entity(array); + }); + + gsc::function::add("map", [](gsc::function_args args) + { + const auto array = gsc::make_array(); + + for (auto i = 0; i < args.size(); i += 2) + { + if (i >= args.size() - 1) + { + continue; + } + + const auto key = args[i].as(); + gsc::add_array_key_value(array, key, args[i + 1]); + } + + return scripting::entity(array); + }); + gsc::function::add("jsonparse", [](gsc::function_args args) { const auto json = args[0].as();