jshn: allow json_get_keys/values to refer to the currently selected array/table if...
authorFelix Fietkau <nbd@openwrt.org>
Tue, 29 Oct 2013 14:11:42 +0000 (15:11 +0100)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 29 Oct 2013 14:11:42 +0000 (15:11 +0100)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
sh/jshn.sh

index e919910..a3f6d11 100644 (file)
@@ -218,25 +218,35 @@ json_get_keys() {
        local __dest="$1"
        local _tbl_cur
 
-       json_get_var _tbl_cur "$2"
+       if [ -n "$2" ]; then
+               json_get_var _tbl_cur "$2"
+       else
+               _json_get_var _tbl_cur JSON_CUR
+       fi
        local __var="${JSON_PREFIX}KEYS_${_tbl_cur}"
        eval "export -- \"$__dest=\${$__var}\"; [ -n \"\${$__var+x}\" ]"
 }
 
 json_get_values() {
        local _v_dest="$1"
-       local _v_keys _v_val
+       local _v_keys _v_val _select=
 
        unset "$_v_dest"
-       json_get_keys _v_keys "$2"
-       json_select "$2"
+       [ -n "$2" ] && {
+               json_select "$2"
+               _select=1
+       }
+
+       json_get_keys _v_keys
        set -- $_v_keys
        while [ "$#" -gt 0 ]; do
                json_get_var _v_val "$1"
                __jshn_raw_append "$_v_dest" "$_v_val"
                shift
        done
-       json_select ..
+       [ -n "$_select" ] && json_select ..
+
+       return 0
 }
 
 json_get_var() {