46 lines
1.2 KiB
Bash
46 lines
1.2 KiB
Bash
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
## gestion de contenu au format json
|
|
##@cooked nocomments
|
|
##@require base
|
|
uprovide json
|
|
urequire base
|
|
|
|
function json_filter() {
|
|
# traiter un flux json pour que chaque valeur soit sur une ligne séparée,
|
|
# facilitant le traitement par un script bash
|
|
awk '{
|
|
gsub(/}\][ ]*$/, "\n&")
|
|
gsub(/},[ ]*$/, "\n&")
|
|
gsub(/[][{]/, "&\n")
|
|
gsub(/,[ ]*"/, ",\n\"")
|
|
gsub(/"}/, "\",\n}")
|
|
print
|
|
}'
|
|
}
|
|
|
|
JSONFUNCS='
|
|
function json_get(line) {
|
|
if (!line) line = $0
|
|
match(line, /^[^"]*"[^"]*":[ ]*"?/); line = substr(line, RSTART + RLENGTH)
|
|
match(line, /"?[ ]*,?[ ]*$/); line = substr(line, 1, RSTART - 1)
|
|
return line
|
|
}
|
|
'
|
|
function awkjson() {
|
|
json_filter | awkrun -f "$JSONFUNCS" "$@"
|
|
}
|
|
|
|
function json_get() { php_json_get "$@"; }
|
|
function json_each() { php_json_each "$@"; }
|
|
function json_build() { php_json_build "$@"; }
|
|
|
|
function php_json_get() {
|
|
"$ULIBDIR/support/php/json_get.php" "$@"
|
|
}
|
|
function php_json_each() {
|
|
"$ULIBDIR/support/php/json_each.php" "$@"
|
|
}
|
|
function php_json_build() {
|
|
"$ULIBDIR/support/php/json_build.php" "$@"
|
|
}
|