Now that #1313 is fixed, |= no longer outputs null when the RHS update expression outputs empty. When a user wants to keep the current value of the LHS they would have the RHS update expression output `.`, so having `empty` achieve the same thing would be redundant. The obvious thing to do is to delete the LHS when the RHS update outputs `empty` (i.e., doesn't output any values). It's reasonable to think that existing programs won't be broken by this change, because reduce and |= not handling empty well is clearly a bug. (Though it's possible that some programs were using empty to quickly terminate reduce or |=, it's not likely. They should use label/break instead.) Prior to this change |= would use the _last_ value output by the RHS update expression. With this change |= will use the _first_ value instead. This change _is_ a minor backwards-incompatible change. It may or may not be acceptable; we'll see. It is a useful change in that it makes |= faster when the update expression produces multiple values.
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 https://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.