Skip to content

pnocera/micro-jq

 
 

Repository files navigation

micro-jq

A small implementation of JQ.

What is it?

jq is a fantastic tool for wrangling JSON, but it's written in C and so cannot be used in a browser. This project implements a subset of the JQ filter language, and is intended for simple filtering jobs in JavaScript where the filter is supplied e.g. by a user.

How does it work?

It uses a parsed expression grammar (via Peggy) to transform JQ expressions into a series of "op codes", with each one representing a JQ filter operation. Each op code is executed with a context, which is initialised with the input object. As each op code executes, the context is updated.

Goals

  • Implement enough of the JQ syntax to be useful
  • Implement it the same as JQ

Non-goals

  • Complete implementation of JQ (but the level of completeness may increase over time).

Additional feature

Generic boolean expression evaluation

shamelessly adapted from https://github.com/hashicorp/js-bexpr/

About

A small implementation of JQ

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 59.4%
  • PEG.js 40.6%