forked from itchyny/gojq
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgojq.go
69 lines (55 loc) · 2.02 KB
/
gojq.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// Package gojq provides the parser and the interpreter of gojq.
// Please refer to [Usage as a library] for introduction.
//
// [Usage as a library]: https://github.com/itchyny/gojq#usage-as-a-library
package gojq
// TODO: use in TypeOf?
const (
JQTypeArray = "array"
JQTypeBoolean = "boolean"
JQTypeNull = "null"
JQTypeNumber = "number"
JQTypeObject = "object"
JQTypeString = "string"
)
// JQValue represents something that can be a jq value
// All functions with return type any can return error on error
// array = []any
// boolean = bool
// null = nil
// number = int | float64 | *big.Int
// object = map[string]any
// string = string
// value = number | boolean | string | array | object | null
type JQValue interface {
// JQValueLength is length of value, ex: value | length
JQValueLength() any // int
// JQValueSliceLen slice length
JQValueSliceLen() any // int
// JQValueIndex look up index for value, ex: value[index]
// index -1 outside after slice, -2 outside before slice
JQValueIndex(index int) any // value
// JQValueSlice slices value, ex: value[start:end]
// start and end indexes are translated and clamped using JQValueSliceLen
JQValueSlice(start int, end int) any // []any
// JQValueKey look up key value of value: ex: value[name]
JQValueKey(name string) any // value
// JQValueEach each of value, ex: value[]
JQValueEach() any // []PathValue
// JQValueKeys keys for value, ex: value | keys
JQValueKeys() any // []string
// JQValueHas check if value has key, ex: value | has(key)
JQValueHas(key any) any // bool
// JQValueType type of value, ex: value | type
JQValueType() string // a JQType* constant
// JQValueToNumber is value represented as a number, ex: value | tonumber
JQValueToNumber() any // number
// JQValueToString is value represented as a string, ex: value | tostring
JQValueToString() any // string
// JQValue value represented as a gojq compatible value
JQValueToGoJQ() any // value
}
// PathValue is a part of a jq path expression
type PathValue struct {
Path, Value any
}