Streaming means that outputs are produced as soon as possible. With the `foreach` syntax one can write programs which reduce portions of the streaming parse of a large input (reduce into proper JSON values, for example), and discard the rest, processing incrementally. This: $ jq -c --stream . should produce the same output as this: $ jq -c '. as $dot | path(..) as $p | $dot | getpath($p) | [$p,.]' The output of `jq --stream .` should be a sequence of`[[<path>],<leaf>]` and `[[<path>]]` values. The latter indicate that the array/object at that path ended. Scalars and empty arrays and objects are leaf values for this purpose. For example, a truncated input produces a path as soon as possible, then later the error: $ printf '[0,\n'|./jq -c --stream . [[0],0] parse error: Unfinished JSON term at EOF at line 3, column 0 $
Documentation
The jq website, manpages and some of the tests are generated from this
directory. The directory holds a Bonsai
website, and the manual is a YAML file in content/3.manual
.
To build the documentation (including building the jq manpage), you'll need a working Ruby setup. The easiest way to get one is to install RVM and Ruby 1.9.3 like so:
\curl -L https://get.rvm.io | bash -s stable --ruby=1.9.3
After that finishes installing, you'll need to make sure RVM is on
your path by doing source $HOME/.rvm/scripts/rvm
, or just opening a
new shell. See http://rvm.io for more info on RVM.
Once RVM is installed, you can install all the dependencies for jq's
documentation build by running this from the docs
directory:
bundle install
When bundle manages to install the dependencies, rerun ./configure
in the jq root directory and then the Makefile will be able to
generate the jq manpage.