diff options
author | Emanuele Torre <torreemanuele6@gmail.com> | 2023-12-13 21:24:52 +0100 |
---|---|---|
committer | Nico Williams <nico@cryptonector.com> | 2024-01-16 16:08:03 -0600 |
commit | 71e7bcdfc154ddbd27b80c840f35b52cb9d66215 (patch) | |
tree | 95e5fdf357bb52c5755883747224a6906b8c93aa /docs | |
parent | f954e82b144429972a13a95acdf0297e8cc67fa3 (diff) |
Revert "lexer: temporarily revert #\ patch; keep CR in comment bug fix"
This reverts commit 5d95791a6795bfc44380c2e6e343ee66dd891e8b.
Diffstat (limited to 'docs')
-rw-r--r-- | docs/content/manual/manual.yml | 64 |
1 files changed, 63 insertions, 1 deletions
diff --git a/docs/content/manual/manual.yml b/docs/content/manual/manual.yml index faf3a22d..412febdc 100644 --- a/docs/content/manual/manual.yml +++ b/docs/content/manual/manual.yml @@ -229,7 +229,7 @@ sections: * `-f filename` / `--from-file filename`: Read filter from the file rather than from a command line, like - awk's -f option. You can also use '#' to make comments. + awk's -f option. * `-L directory`: @@ -3537,6 +3537,68 @@ sections: (.posts[] | select(.author == "stedolan") | .comments) |= . + ["terrible."] + - title: Comments + + body: | + + You can write comments in your jq filters using `#`. + + A `#` character (not part of a string) starts a comment. + All characters from `#` to the end of the line are ignored. + + If the end of the line is preceded by an odd number of backslash + characters, the following line is also considered part of the + comment and is ignored. + + For example, the following code outputs `[1,3,4,7]` + + [ + 1, + # foo \ + 2, + # bar \\ + 3, + 4, # baz \\\ + 5, \ + 6, + 7 + # comment \ + comment \ + comment + ] + + Backslash continuing the comment on the next line can be useful + when writing the "shebang" for a jq script: + + #!/bin/sh -- + # sum - Output the sum of the given arguments (or stdin) + # usage: sum [numbers...] + # \ + exec jq --args -MRnf "$0" -- "$@" + + $ARGS.positional | + reduce ( + if . == [] + then inputs + else .[] + end | + . as $dot | + try tonumber catch false | + if not or isnan then + @json "sum: Invalid number \($dot).\n" | halt_error(1) + end + ) as $n (0; . + $n) + + The `exec` line is considered a comment by jq, so it is ignored. + But it is not ignored by `sh`, since in `sh` a backslash at the + end of the line does not continue the comment. + With this trick, when the script is invoked as `sum 1 2`, + `/bin/sh -- /path/to/sum 1 2` will be run, and `sh` will then + run `exec jq --args -MRnf /path/to/sum -- 1 2` replacing itself + with a `jq` interpreter invoked with the specified options (`-M`, + `-R`, `-n`, `--args`), that evaluates the current file (`$0`), + with the arguments (`$@`) that were passed to `sh`. + - title: Modules body: | |