sh/jshn.sh: replace "tr" calls with inline substitution, signalize success with return values
This commit is contained in:
parent
652162cf86
commit
66308641bf
1 changed files with 8 additions and 7 deletions
15
sh/jshn.sh
15
sh/jshn.sh
|
@ -24,7 +24,7 @@ json_add_generic() {
|
||||||
var=$(( ${aseq:-0} + 1 ))
|
var=$(( ${aseq:-0} + 1 ))
|
||||||
export -- "SEQ_$cur=$var"
|
export -- "SEQ_$cur=$var"
|
||||||
else
|
else
|
||||||
local name="$(echo -n "$var" | tr -C '[a-zA-Z0-9_]' _)"
|
local name="${var//[^a-zA-Z0-9_]/_}"
|
||||||
[[ "$name" == "$var" ]] || export -- "NAME_${cur}_${name}=$var"
|
[[ "$name" == "$var" ]] || export -- "NAME_${cur}_${name}=$var"
|
||||||
var="$name"
|
var="$name"
|
||||||
fi
|
fi
|
||||||
|
@ -94,14 +94,14 @@ json_dump() {
|
||||||
|
|
||||||
json_get_type() {
|
json_get_type() {
|
||||||
local dest="$1"
|
local dest="$1"
|
||||||
local var="$2"
|
local var="TYPE_${JSON_CUR}_$2"
|
||||||
eval "export -- \"$dest=\${TYPE_${JSON_CUR}_$var}\""
|
eval "[ -n \"\${$var+x}\" ] && export -- \"$dest=\${$var}\""
|
||||||
}
|
}
|
||||||
|
|
||||||
json_get_var() {
|
json_get_var() {
|
||||||
local dest="$1"
|
local dest="$1"
|
||||||
local var="$(echo -n "$2" | tr -C '[a-zA-Z0-9_]' _)"
|
local var="${JSON_CUR}_${2//[^a-zA-Z0-9_]/_}"
|
||||||
eval "export -- \"$dest=\${${JSON_CUR}_$var}\""
|
eval "[ -n \"\${$var+x}\" ] && export -- \"$dest=\${$var}\""
|
||||||
}
|
}
|
||||||
|
|
||||||
json_get_vars() {
|
json_get_vars() {
|
||||||
|
@ -117,11 +117,11 @@ json_select() {
|
||||||
|
|
||||||
[ -z "$1" ] && {
|
[ -z "$1" ] && {
|
||||||
JSON_CUR="JSON_VAR"
|
JSON_CUR="JSON_VAR"
|
||||||
return
|
return 0
|
||||||
}
|
}
|
||||||
[[ "$1" == ".." ]] && {
|
[[ "$1" == ".." ]] && {
|
||||||
eval "JSON_CUR=\"\${UP_$JSON_CUR}\""
|
eval "JSON_CUR=\"\${UP_$JSON_CUR}\""
|
||||||
return;
|
return 0
|
||||||
}
|
}
|
||||||
json_get_type type "$target"
|
json_get_type type "$target"
|
||||||
case "$type" in
|
case "$type" in
|
||||||
|
@ -130,6 +130,7 @@ json_select() {
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "WARNING: Variable '$target' does not exist or is not an array/object"
|
echo "WARNING: Variable '$target' does not exist or is not an array/object"
|
||||||
|
return 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue