jshn: allow json_get_keys/values to refer to the currently selected array/table if no argument is given
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
parent
b5aa522f5d
commit
b7e61837e7
1 changed files with 15 additions and 5 deletions
20
sh/jshn.sh
20
sh/jshn.sh
|
@ -218,25 +218,35 @@ json_get_keys() {
|
||||||
local __dest="$1"
|
local __dest="$1"
|
||||||
local _tbl_cur
|
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}"
|
local __var="${JSON_PREFIX}KEYS_${_tbl_cur}"
|
||||||
eval "export -- \"$__dest=\${$__var}\"; [ -n \"\${$__var+x}\" ]"
|
eval "export -- \"$__dest=\${$__var}\"; [ -n \"\${$__var+x}\" ]"
|
||||||
}
|
}
|
||||||
|
|
||||||
json_get_values() {
|
json_get_values() {
|
||||||
local _v_dest="$1"
|
local _v_dest="$1"
|
||||||
local _v_keys _v_val
|
local _v_keys _v_val _select=
|
||||||
|
|
||||||
unset "$_v_dest"
|
unset "$_v_dest"
|
||||||
json_get_keys _v_keys "$2"
|
[ -n "$2" ] && {
|
||||||
json_select "$2"
|
json_select "$2"
|
||||||
|
_select=1
|
||||||
|
}
|
||||||
|
|
||||||
|
json_get_keys _v_keys
|
||||||
set -- $_v_keys
|
set -- $_v_keys
|
||||||
while [ "$#" -gt 0 ]; do
|
while [ "$#" -gt 0 ]; do
|
||||||
json_get_var _v_val "$1"
|
json_get_var _v_val "$1"
|
||||||
__jshn_raw_append "$_v_dest" "$_v_val"
|
__jshn_raw_append "$_v_dest" "$_v_val"
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
json_select ..
|
[ -n "$_select" ] && json_select ..
|
||||||
|
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
json_get_var() {
|
json_get_var() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue