##@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" "$@"
}