jq

lenguaje de programación

jq es un lenguaje funcional de muy alto nivel con soporte para backtracking y gestión de flujos de datos JSON. Está relacionado con los lenguajes de programación Icon y Haskell.

jq
Desarrollador(es)
Stephen Dolan y Nico Williams
https://stedolan.github.io/jq/, http://stedolan.github.io/jq/ y https://stedolan.github.io/jq
Información general
Paradigma Programación_funcional, orientado al procesamiento de JSON
Apareció en 22 de octubre de 2012 (11 años, 5 meses y 7 días)
Diseñado por Stephen Dolan
Sistema de tipos dinámico
Implementaciones jq
Influido por Icon, Haskell
Licencia Licencia MIT

Sintaxis editar

El lenguaje jq está basado en los conceptos de flujos, tuberías y filtros familiares a los del Shell de Unix. Los filtros se pueden construir a partir de expresiones de JSON utilizando una sintaxis similar a la de JSON y se conectan con el caràcter "|". El filtro identidad es ".", y por ejemplo la expresión 1 | {"a": .} producirá el valor de JSON : {"a": 1}.

Este ejemplo muestra cómo definir un filtro con nombre para formatear un entero en cualquier base:

def tobase($b):
    def digit: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[.:.+1];
    def div: (. / $b) | floor;
    def mod: . % $b;
    def r: if . < $b then digit else (div | r) + (mod | digit) end;
    #
    select(2 <= $b and $b <= 36)
    | r
;

El siguiente ejemplo presenta el uso de generadores:

def send_more_money:
    def choose(m;n;used): ([range(m;n+1)] - used)[];
    label $pipe
    | 1 as $m
    | 0 as $o
    | choose(8;9;[]) as $s
    | choose(2;9;[$s]) as $e
    | choose(2;9;[$s,$e]) as $n
    | choose(2;9;[$s,$e,$n]) as $d
    | choose(2;9;[$s,$e,$n,$d]) as $r
    | choose(2;9;[$s,$e,$n,$d,$r]) as $y
    | select(num($s;$e;$n;$d) + num($m;$o;$r;$e) == num($m;$o;$n;$e;$y))
    | [$s,$e,$n,$d,$m,$o,$r,$e,$m,$o,$n,$e,$y],
      break $pipe
;

Véase también editar

Referencias editar

El manual de jq y la wiki de jq son las principales referencias de jq.

Enlaces externos editar