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.

Sintaxis

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

  • Icon
  • Haskell

Referencias

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

Enlaces externos

  • Página principal de jq
  • wiki de jq
  • Código fuente de jq
  • Página del Lenguaje de Programación jq en la web Rosetta Code de tareas de programación comparadas



jqMonogrammLogo mit EmblemStil auf schwarzem Hintergrund isoliert

JQ Projects Photos, videos, logos, illustrations and branding on Behance

JQ

JQ Instalação e Explicação

‎JQ Basketball Training on the App Store