Comments (5)
Okay, let me think for a few days. Maybe interface{ ErrorValue() interface{} }
would fit.
from gojq.
Throw any error, that will be caught by try
. So exporting exitCodeError
doesn't make sense.
package main
import (
"errors"
"fmt"
"log"
"github.com/itchyny/gojq"
)
func main() {
query, err := gojq.Parse("try f catch .")
if err != nil {
log.Fatalln(err)
}
code, err := gojq.Compile(
query,
gojq.WithFunction("f", 0, 0,
func(v interface{}, _ []interface{}) interface{} {
return errors.New("error: custom error")
},
))
if err != nil {
log.Fatalln(err)
}
iter := code.Run(nil)
for {
v, ok := iter.Next()
if !ok {
break
}
if err, ok := v.(error); ok {
log.Fatalln(err)
}
fmt.Printf("%#v\n", v)
}
}
5 is not a random exit code. It follows the jq specification (exit codes 1 through 5 have each meaning in jq).
% jq -n '"x" | error'; echo $?
jq: error (at <unknown>): x
5
from gojq.
Aha sorry I must have tested it wrongly somehow. But I was probably a bit unclear that I wanted to be able to throw any value, currently with error
you catch the Error()
string. So something like this:
$ jq -n 'try error({a: "some value"}) catch .'
{
"a": "some value"
}
In my example the custom function would return &gojq.ExitCodeError{Value: map[string]interface{}{"a": "some value"}
to get the same behaviour.
from gojq.
I implemented the catch
handler to use the error value when the error implements the following interface.
type ValueError interface {
error
Value() interface{}
}
from gojq.
Ok, thanks!
from gojq.
Related Issues (20)
- Difference between these two functions HOT 3
- path(getpath()) roundtrip doesn't work for array iterators - .[] HOT 3
- Raw output HOT 1
- gojq -nr '["\u0000"] | @tsv' HOT 6
- Sub and gsub functions HOT 2
- first/1 and --stream HOT 9
- can u provide gojq rpm package ? HOT 1
- concurrency issue detected with go1.19 HOT 2
- undocumented discrepancy re test/1 HOT 2
- gohq won't compile with the latest golang:alpine on ARM64 HOT 6
- Inability to provide user-defined indexing funtion HOT 5
- Panic in `repeatString` when repeating an empty string more than `9223372036854775807 - 512` times HOT 1
- Only getting `gojq: compile error: function not defined: keys_unsorted/0` HOT 3
- normalizeNumbers panic HOT 12
- go 1.20.1 has security issues HOT 2
- Non-integer decimal numbers lose precision HOT 2
- "For paths starting with $ORIGIN/, the path of the jq executable is substituted for $ORIGIN." HOT 7
- Support for context.Context in func(any, []any) any HOT 5
- Import statement for importing the contents of a file HOT 4
- Support "if" without "else" clause HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gojq.