sh/jshn.sh: fix allowing numbers in identifiers
[project/libubox.git] / sh / jshn.sh
index 8ecefcf..7f922c4 100644 (file)
@@ -24,7 +24,7 @@ json_add_generic() {
                var=$(( ${aseq:-0} + 1 ))
                export -- "SEQ_$cur=$var"
        else
-               local name="$(echo -n "$var" | tr -C '[a-zA-Z_]' _)"
+               local name="$(echo -n "$var" | tr -C '[a-zA-Z0-9_]' _)"
                [[ "$name" == "$var" ]] || export -- "NAME_${cur}_${name}=$var"
                var="$name"
        fi
@@ -100,10 +100,17 @@ json_get_type() {
 
 json_get_var() {
        local dest="$1"
-       local var="$2"
+       local var="$(echo -n "$2" | tr -C '[a-zA-Z0-9_]' _)"
        eval "export -- \"$dest=\${${JSON_CUR}_$var}\""
 }
 
+json_get_vars() {
+       while [ "$#" -gt 0 ]; do
+               local _var="$1"; shift
+               json_get_var "$_var" "$_var"
+       done
+}
+
 json_select() {
        local target="$1"
        local type