- export -- "${cur}_$var=$val"
- export -- "TYPE_${cur}_$var=$type"
- jshn_append JSON_UNSET "${cur}_$var TYPE_${cur}_$var"
- jshn_append "KEYS_${cur}" "$var"
+ local cur_var=
+ export -- \
+ "${JSON_PREFIX}${4}_$var=$3" \
+ "${JSON_PREFIX}TYPE_${4}_$var=$1"
+ _jshn_append "JSON_UNSET" "${4}_$var"
+ _jshn_append "KEYS_$4" "$var"
+}
+
+_json_add_table() {
+ # name=$1
+ # type=$2
+ # itype=$3
+ local cur seq
+
+ _json_get_var cur JSON_CUR
+ _json_inc JSON_SEQ seq
+
+ local table="JSON_$3$seq"
+ _json_set_var "UP_$table" "$cur"
+ export -- "${JSON_PREFIX}KEYS_$table="
+ unset "${JSON_PREFIX}SEQ_$table"
+ _json_set_var JSON_CUR "$table"
+ _jshn_append "JSON_UNSET" "$table"
+
+ _json_add_generic "$2" "$1" "$table" "$cur"
+}
+
+_json_close_table() {
+ local _s_cur
+
+ _json_get_var _s_cur JSON_CUR
+ _json_get_var "${JSON_PREFIX}JSON_CUR" "UP_$_s_cur"
+}
+
+json_set_namespace() {
+ local _new="$1"
+ local _old="$2"
+
+ [ -n "$_old" ] && _set_var "$_old" "$JSON_PREFIX"
+ JSON_PREFIX="$_new"
+}
+
+json_cleanup() {
+ local unset
+
+ _json_get_var unset JSON_UNSET
+ for tmp in $unset JSON_VAR; do
+ unset \
+ ${JSON_PREFIX}UP_$tmp \
+ ${JSON_PREFIX}KEYS_$tmp \
+ ${JSON_PREFIX}SEQ_$tmp \
+ ${JSON_PREFIX}TYPE_$tmp \
+ ${JSON_PREFIX}NAME_$tmp \
+ ${JSON_PREFIX}$tmp
+ done
+
+ unset \
+ ${JSON_PREFIX}JSON_SEQ \
+ ${JSON_PREFIX}JSON_CUR \
+ ${JSON_PREFIX}JSON_UNSET