diff options
| author | Andreas Hochsteger <andreas.hochsteger@gmail.com> | 2022-12-29 23:01:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-29 22:01:05 +0000 |
| commit | e045af5d9c9106594bc2a5f609b14dbc603f7253 (patch) | |
| tree | 7591781fd92cafd19bd5483b8e1c2fedae7ebc85 /docs/content/functions | |
| parent | f8a636898f316ce0d4a9a12335e9633c218f9e8a (diff) | |
Add coll.JQ using gojq library (#1585)
* feat: add coll.JQ using gojq library
* fix: jq function naming (gojq -> jq)
* test: add tests (take from jsonpath_test.go)
* chore: add TODO for nil values (are they allowed?)
* refactor: use fmt.Errorf instead of errors.Wrapf
Co-authored-by: Dave Henderson <dhenderson@gmail.com>
* fix: wrong alias for coll.JQ
Co-authored-by: Dave Henderson <dhenderson@gmail.com>
* docs: add links to JQ
Co-authored-by: Dave Henderson <dhenderson@gmail.com>
* test: add assertions after json marshal/unmarshal
Co-authored-by: Dave Henderson <dhenderson@gmail.com>
* refactor: use fmt.Errorf instead of errors.Wrapf
Co-authored-by: Dave Henderson <dhenderson@gmail.com>
* fix: test syntax and null handling
* docs: improve documentation
* docs: add blank line
* Support cancellation
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
* Support (almost) all types, not just map[string]interface{} and []interface{}
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
* add an integration test for coll.JQ
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Co-authored-by: Andreas Hochsteger <andreas.hochsteger@oeamtc.at>
Co-authored-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'docs/content/functions')
| -rw-r--r-- | docs/content/functions/coll.md | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/docs/content/functions/coll.md b/docs/content/functions/coll.md index e441da9b..55f2b9cf 100644 --- a/docs/content/functions/coll.md +++ b/docs/content/functions/coll.md @@ -200,6 +200,48 @@ $ gomplate -i '{{ .books | jsonpath `$..works[?( @.edition_count > 400 )].title` [Alice's Adventures in Wonderland Gulliver's Travels] ``` +## `coll.JQ` + +**Alias:** `jq` + +Filters an input object or list using the [jq](https://stedolan.github.io/jq/) language, as implemented by [gojq](https://github.com/itchyny/gojq). + +Any JSON datatype may be used as input (NOTE: strings are not JSON-parsed but passed in as is). +If the expression results in multiple items (no matter if streamed or as an array) they are wrapped in an array. +Otherwise a single item is returned (even if resulting in an array with a single contained element). + +JQ filter expressions can be tested at https://jqplay.org/ + +See also: + +- [jq manual](https://stedolan.github.io/jq/manual/) +- [gojq differences to jq](https://github.com/itchyny/gojq#difference-to-jq) + +### Usage + +```go +coll.JQ expression in +``` +```go +in | coll.JQ expression +``` + +### Arguments + +| name | description | +|------|-------------| +| `expression` | _(required)_ The JQ expression | +| `in` | _(required)_ The object or list to query | + +### Examples + +```console +$ gomplate \ + -i '{{ .books | jq `[.works[]|{"title":.title,"authors":[.authors[].name],"published":.first_publish_year}][0]` }}' \ + -c books=https://openlibrary.org/subjects/fantasy.json +map[authors:[Lewis Carroll] published:1865 title:Alice's Adventures in Wonderland] +``` + ## `coll.Keys` **Alias:** `keys` |
