debug/1 (#2710)
* debug/1 This def ensures the output of debug(m1,m2) is kept together. Closes #2709 #2111 #2112
This commit is contained in:
1 parent
4b1ac7c95f
commit
07ef97c414
3 files changed
+75
-7
No files matched your search
@@ -3075,13 +3075,32 @@ sections:
|
|||||||
to invoke jq with the -n command-line option, otherwise
|
to invoke jq with the -n command-line option, otherwise
|
||||||
the first entity will be lost.
|
the first entity will be lost.
|
||||||
|
|
||||||
- title: "`debug`"
|
- title: "`debug`, `debug(msgs)`"
|
||||||
body: |
|
body: |
|
||||||
|
|
||||||
Causes a debug message based on the input value to be
|
These two filters are like `.` but have as a side-effect the
|
||||||
produced. The jq executable wraps the input value with
|
production of one or more messages on stderr.
|
||||||
`["DEBUG:", <input-value>]` and prints that and a newline on
|
|
||||||
stderr, compactly. This may change in the future.
|
The message produced by the `debug` filter has the form
|
||||||
|
|
||||||
|
["DEBUG:",<input-value>]
|
||||||
|
|
||||||
|
where `<input-value>` is a compact rendition of the input
|
||||||
|
value. This format may change in the future.
|
||||||
|
|
||||||
|
The `debug(msgs)` filter is defined as `(msgs | debug | empty), .`
|
||||||
|
thus allowing great flexibility in the content of the message,
|
||||||
|
while also allowing multi-line debugging statements to be created.
|
||||||
|
|
||||||
|
For example, the expression:
|
||||||
|
|
||||||
|
1 as $x | 2 | debug("Entering function foo with $x == \($x)", .) | (.+1)
|
||||||
|
|
||||||
|
would produce the value 3 but with the following two lines
|
||||||
|
being written to stderr:
|
||||||
|
|
||||||
|
["DEBUG:","Entering function foo with $x == 1"]
|
||||||
|
["DEBUG:",2]
|
||||||
|
|
||||||
- title: "`stderr`"
|
- title: "`stderr`"
|
||||||
body: |
|
body: |
|
||||||
|
|||||||
Generated
+48
-2
@@ -3353,8 +3353,54 @@ Outputs all remaining inputs, one by one\.
|
|||||||
.P
|
.P
|
||||||
This is primarily useful for reductions over a program\'s inputs\. Note that when using \fBinputs\fR it is generally necessary to invoke jq with the \-n command\-line option, otherwise the first entity will be lost\.
|
This is primarily useful for reductions over a program\'s inputs\. Note that when using \fBinputs\fR it is generally necessary to invoke jq with the \-n command\-line option, otherwise the first entity will be lost\.
|
||||||
.
|
.
|
||||||
.SS "debug"
|
.SS "debug, debug(msgs)"
|
||||||
Causes a debug message based on the input value to be produced\. The jq executable wraps the input value with \fB["DEBUG:", <input\-value>]\fR and prints that and a newline on stderr, compactly\. This may change in the future\.
|
These two filters are like \fB\.\fR but have as a side\-effect the production of one or more messages on stderr\.
|
||||||
|
.
|
||||||
|
.P
|
||||||
|
The message produced by the \fBdebug\fR filter has the form
|
||||||
|
.
|
||||||
|
.IP "" 4
|
||||||
|
.
|
||||||
|
.nf
|
||||||
|
|
||||||
|
["DEBUG:",<input\-value>]
|
||||||
|
.
|
||||||
|
.fi
|
||||||
|
.
|
||||||
|
.IP "" 0
|
||||||
|
.
|
||||||
|
.P
|
||||||
|
where \fB<input\-value>\fR is a compact rendition of the input value\. This format may change in the future\.
|
||||||
|
.
|
||||||
|
.P
|
||||||
|
The \fBdebug(msgs)\fR filter is defined as \fB(msgs | debug | empty), \.\fR thus allowing great flexibility in the content of the message, while also allowing multi\-line debugging statements to be created\.
|
||||||
|
.
|
||||||
|
.P
|
||||||
|
For example, the expression:
|
||||||
|
.
|
||||||
|
.IP "" 4
|
||||||
|
.
|
||||||
|
.nf
|
||||||
|
|
||||||
|
1 as $x | 2 | debug("Entering function foo with $x == \e($x)", \.) | (\.+1)
|
||||||
|
.
|
||||||
|
.fi
|
||||||
|
.
|
||||||
|
.IP "" 0
|
||||||
|
.
|
||||||
|
.P
|
||||||
|
would produce the value 3 but with the following two lines being written to stderr:
|
||||||
|
.
|
||||||
|
.IP "" 4
|
||||||
|
.
|
||||||
|
.nf
|
||||||
|
|
||||||
|
["DEBUG:","Entering function foo with $x == 1"]
|
||||||
|
["DEBUG:",2]
|
||||||
|
.
|
||||||
|
.fi
|
||||||
|
.
|
||||||
|
.IP "" 0
|
||||||
.
|
.
|
||||||
.SS "stderr"
|
.SS "stderr"
|
||||||
Prints its input in raw and compact mode to stderr with no additional decoration, not even a newline\.
|
Prints its input in raw and compact mode to stderr with no additional decoration, not even a newline\.
|
||||||
|
|||||||
@@ -266,6 +266,9 @@ def pick(pathexps):
|
|||||||
| reduce path(pathexps) as $a (null;
|
| reduce path(pathexps) as $a (null;
|
||||||
setpath($a; $in|getpath($a)) );
|
setpath($a; $in|getpath($a)) );
|
||||||
|
|
||||||
|
# ensure the output of debug(m1,m2) is kept together:
|
||||||
|
def debug(msgs): (msgs | debug | empty), .;
|
||||||
|
|
||||||
# SQL-ish operators here:
|
# SQL-ish operators here:
|
||||||
def INDEX(stream; idx_expr):
|
def INDEX(stream; idx_expr):
|
||||||
reduce stream as $row ({}; .[$row|idx_expr|tostring] = $row);
|
reduce stream as $row ({}; .[$row|idx_expr|tostring] = $row);
|
||||||
|
|||||||
Reference in new issue
Block a user