From 8496b280c5142ead5a0c211f50865b32586d3b5c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sven=20Sch=C3=B6ling?= Date: Sat, 20 Nov 2021 00:51:16 +0100 Subject: [PATCH] kivi.serialize - javascript flatten --- js/kivi.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/js/kivi.js b/js/kivi.js index 7fb250149..31a56a443 100644 --- a/js/kivi.js +++ b/js/kivi.js @@ -699,6 +699,26 @@ namespace("kivi", function(ns) { return kivi._shell_escape(elt); }).join(' '); }; + + ns.serialize = function(source, target = [], prefix, in_array = false) { + let arr_prefix = first => in_array ? (first ? "[+]" : "[]") : ""; + + if (Array.isArray(source) ) { + source.forEach(( val, i ) => { + ns.serialize(val, target, prefix + arr_prefix(i == 0), true); + }); + } else if (typeof source === "object") { + let first = true; + for (let key in source) { + ns.serialize(source[key], target, (prefix !== undefined ? prefix + arr_prefix(first) + "." : "") + key); + first = false; + } + } else { + target.push({ name: prefix + arr_prefix(false), value: source }); + } + + return target; + }; }); kivi = namespace('kivi'); -- 2.20.1