expr

package
v0.0.0-...-df391e2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2024 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Overview

Example (Abs)
eval(`abs(-3.14)`, nil)
Output:

3.14
Example (Average)
eval(`average(1, 2, 3, "foo", 10)`, 10.4)
Output:

4
Example (Base64encode)
eval(`base64encode("foo bar baz_test")`, nil)
Output:

Zm9vIGJhciBiYXpfdGVzdA==
Example (Camelize)
eval(`camelize("foo bar baz_test")`, nil)
Output:

fooBarBaz_test
Example (CastFloatToInt)
eval(`int("42.690")`, nil)
Output:

0
Example (CastStringNumberToInt)
eval(`int("42690")`, nil)
Output:

42690
Example (CastStringToInt)
eval(`int("abc")`, nil)
Output:

0
Example (Ceil)
eval(`ceil(3.14)`, nil)
Output:

4
Example (Earliest)
eval(`earliest(hgp, wfa)`, exampleTimeParams)
Output:

1929-01-06 00:00:00 +0000 UTC
Example (Filter_kv)
var (
	kv = &KV{value: map[string]string{
		"k1": "v1",
		"k2": "v2",
	}}
	p = map[string]interface{}{
		"kv":   kv,
		"key1": "k1",
		"key2": "k3",
	}
)

eval(`filter(kv, key1, key2)`, p)
fmt.Printf("\nOriginal KV should be %v", kv.value)
Output:

map[k1:v1]
Original KV should be map[k1:v1 k2:v2]
Example (Filter_kvv)
var (
	kvv = &KVV{value: map[string][]string{
		"k1": {"v1"},
		"k2": {"v2"},
	}}
	p = map[string]interface{}{
		"kv":   kvv,
		"key1": "k1",
		"key2": "k3",
	}
)

eval(`filter(kv, key1, key2)`, p)
fmt.Printf("\nOriginal KVV should be %v", kvv.value)
Output:

map[k1:[v1]]
Original KVV should be map[k1:[v1] k2:[v2]]
Example (Filter_vars)
var (
	p = map[string]interface{}{
		"vars": &Vars{value: map[string]TypedValue{
			"k1": &String{value: "v1"},
			"k5": &String{value: "v5"},
		}},
		"key1": "k1",
		"key2": "k3",
		"key3": "k5",
	}
)

eval(`toJSON(filter(vars, key1, key2, key3))`, p)
Output:

{"k1":{"@value":"v1","@type":"String"},"k5":{"@value":"v5","@type":"String"}}
Example (Floor)
eval(`floor(3.14)`, nil)
Output:

3
Example (HasPrefix)
eval(`hasPrefix("foo bar", "foo ")`, nil)
Output:

true
Example (HasSubstring_caseI)
eval(`hasSubstring("foo BAR", "o b", false)`, nil)
Output:

true
Example (HasSubstring_caseS)
eval(`hasSubstring("foo BAR", "o b", true)`, nil)
Output:

false
Example (HasSuffix)
eval(`hasSuffix("foo bar", "ar")`, nil)
Output:

true
Example (IsEmail)
eval(`isUrl("example.user+valid@example.tld")`, nil)
Output:

true
Example (IsLeapYear)
eval(`isLeapYear(ghd)`, exampleTimeParams)
Output:

false
Example (IsUrl)
eval(`isUrl("http:/example.tld")`, nil)
Output:

false
Example (IsWeekDay)
eval(`isWeekDay(ghd)`, exampleTimeParams)
Output:

true
Example (Join)
eval(`join(exploded, ",")`, map[string][]string{"exploded": {"One", "two", "three"}})
Output:

One,two,three
Example (Kv_toJSON)
var (
	p = map[string]interface{}{
		"kv": Must(NewKV(
			&KV{value: map[string]string{
				"k1": "v1",
				"k2": "v2",
			}},
		)),
	}
)

eval(`toJSON(kv)`, p)
Output:

{"k1":"v1","k2":"v2"}
Example (Latest)
eval(`latest(ghd, wfa)`, exampleTimeParams)
Output:

1993-02-02 06:00:00 -0500 -0500
Example (Ln)
eval(`pow(2, 3)`, nil)
Output:

8
Example (Log)
eval(`log(100)`, nil)
Output:

2
Example (Longest)
eval(`longest("foo", "foobar")`, nil)
Output:

foobar
Example (Match)
eval(`match("foo bar baz_test", "^foo\\s.*$")`, nil)
Output:

true
Example (Max)
eval(`max(2, 1, 3)`, nil)
Output:

3
Example (Merge_kv)
var (
	kv = &KV{}
	p  = map[string]interface{}{
		"kv": kv,
		"foo": &KV{value: map[string]string{
			"k1": "v1",
		}},
		"bar": &KV{value: map[string]string{
			"k2": "v2",
		}},
	}
)

eval(`merge(kv, foo, bar)`, p)
fmt.Printf("\nOriginal KV should be %v", kv.value)
Output:

map[k1:v1 k2:v2]
Original KV should be map[]
Example (Merge_kvv)
var (
	kvv = &KVV{}
	p   = map[string]interface{}{
		"kvv": kvv,
		"foo": &KVV{value: map[string][]string{
			"k1": {"v1"},
		}},
		"bar": &KVV{value: map[string][]string{
			"k1": {"v11"},
			"k2": {"v2"},
		}},
	}
)

eval(`merge(kvv, foo, bar)`, p)
fmt.Printf("\nOriginal KVV should be %v", kvv.value)
Output:

map[k1:[v1 v11] k2:[v2]]
Original KVV should be map[]
Example (Merge_vars)
var (
	p = map[string]interface{}{
		"vars": &Vars{},
		"foo": &Vars{value: map[string]TypedValue{
			"k1": &String{value: "v1"},
		}},
		"bar": &Vars{value: map[string]TypedValue{
			"k2": &String{value: "v2"},
		}},
	}
)

eval(`toJSON(merge(foo, bar))`, p)
Output:

{"k1":{"@value":"v1","@type":"String"},"k2":{"@value":"v2","@type":"String"}}
Example (Min)
eval(`min(2, 1, 3)`, nil)
Output:

1
Example (ModDate)
eval(`modDate(ghd, "5")`, exampleTimeParams)
Output:

1993-02-07 06:00:00 -0500 -0500
Example (ModMonth)
eval(`modMonth(ghd, "1")`, exampleTimeParams)
Output:

1993-03-02 06:00:00 -0500 -0500
Example (ModTime)
eval(`modTime(ghd, "+30m")`, exampleTimeParams)
Output:

1993-02-02 06:30:00 -0500 -0500
Example (ModWeek)
eval(`modWeek(ghd, "1")`, exampleTimeParams)
Output:

1993-02-09 06:00:00 -0500 -0500
Example (ModYear)
eval(`modYear(ghd, "5")`, exampleTimeParams)
Output:

1998-02-02 06:00:00 -0500 -0500
Example (Omit_kv)
var (
	kv = &KV{value: map[string]string{
		"k1": "v1",
		"k2": "v2",
		"k3": "v3",
	}}
	p = map[string]interface{}{
		"kv":   kv,
		"key1": "k1",
		"key2": "k3",
	}
)

eval(`omit(kv, key1, key2)`, p)
fmt.Printf("\nOriginal KV should be %v", kv.value)
Output:

map[k2:v2]
Original KV should be map[k1:v1 k2:v2 k3:v3]
Example (Omit_kvv)
var (
	kvv = &KVV{value: map[string][]string{
		"k1": {"v1"},
		"k2": {"v2"},
		"k3": {"v3"},
	}}
	p = map[string]interface{}{
		"kvv":  kvv,
		"key1": "k1",
		"key2": "k3",
	}
)

eval(`omit(kvv, key1, key2)`, p)
fmt.Printf("\nOriginal KVV should be %v", kvv.value)
Output:

map[k2:[v2]]
Original KVV should be map[k1:[v1] k2:[v2] k3:[v3]]
Example (Omit_vars)
var (
	p = map[string]interface{}{
		"vars": &Vars{value: map[string]TypedValue{
			"k1": &String{value: "v1"},
			"k2": &String{value: "v2"},
			"k3": &String{value: "v3"},
		}},
		"key1": "k1",
		"key2": "k3",
	}
)

eval(`toJSON(omit(vars, key1, key2))`, p)
Output:

{"k2":{"@value":"v2","@type":"String"}}
Example (ParseDate)
eval(`date("1993-02-02 06:00:00+01:10")`, nil)
Output:

1993-02-02 06:00:00 +0110 +0110
Example (ParseDuration)
eval(`parseDuration("2h")`, nil)
Output:

2h0m0s
Example (ParseISODate)
eval(`date("1993-02-02T06:00:00-05:00")`, nil)
Output:

1993-02-02 06:00:00 -0500 -0500
Example (Pop_float)
eval(`pop(floatArr)`, vals)
Output:

69.42
Example (Pop_int)
eval(`pop(intArr)`, vals)
Output:

<nil>
Example (Pop_string)
eval(`pop(stringArr)`, vals)
Output:

first
Example (Push_bool)
eval(`push(boolArr, boolVal)`, vals)
Output:

[true true false false]
Example (Push_float)
eval(`push(floatArr, 3.14)`, vals)
Output:

[69.42 3.14]
Example (Push_int)
eval(`push(intArr, intVal)`, vals)
Output:

[42]
Example (Push_string)
eval(`push(stringArr, stringVal)`, vals)
Output:

[first foobar]
Example (RandomWithSingleInput)
eval(`max(random(6), 7)`, nil)
Output:

7
Example (RandomWithTwoInput)
eval(`min(random(2, 6), 1)`, nil)
Output:

1
Example (Repeat)
eval(`repeat("duran ", c)`, map[string]interface{}{"c": 2})
Output:

duran duran
Example (Replace_all)
eval(`replace("foobar baz", "ba", "BA", c)`, map[string]interface{}{"c": -1})
Output:

fooBAr BAz
Example (Replace_first)
eval(`replace("foobar baz", "ba", "BA", c)`, map[string]interface{}{"c": 1})
Output:

fooBAr baz
Example (Round)
eval(`round(3.14,1)`, nil)
Output:

3.1
Example (Set_kv)
var (
	kv = &KV{}
	p  = map[string]interface{}{
		"kv":    kv,
		"key":   "k1",
		"value": Must(NewString("v11")),
	}
)

eval(`set(kv, key, value)`, p)
fmt.Printf("\nOriginal KV should be %v", kv.value)
Output:

map[k1:v11]
Original KV should be map[]
Example (Set_kvv)
var (
	kvv = &KVV{}
	p   = map[string]interface{}{
		"kvv":   kvv,
		"key":   "foo",
		"value": Must(NewString("bar")),
	}
)

eval(`set(kvv, key, value)`, p)
fmt.Printf("\nOriginal KVV should be %v", kvv.value)
Output:

map[foo:[bar]]
Original KVV should be map[]
Example (Set_vars)
var (
	p = map[string]interface{}{
		"vars":  &Vars{},
		"key":   "foo",
		"value": &String{value: "foo"},
	}
)

eval(`toJSON(set(vars, key, value))`, p)
Output:

{"foo":{"@value":"foo","@type":"String"}}
Example (Shorten_char)
eval(`shorten("foo bar 1337, this is. test one - or three", "char", c)`, map[string]int{"c": 22})
Output:

foo bar 1337, this is …
Example (Shorten_word)
eval(`shorten("foo bar 1337, this is. test one - or three", "word", c)`, map[string]int{"c": 3})
Output:

foo bar 1337 …
Example (Shortest)
eval(`shortest("foo", "foobar")`, nil)
Output:

foo
Example (SimpleExpression)
eval(`40 + 2`, nil)
Output:

42
Example (Snakify)
eval(`snakify("foo bar baz_test")`, nil)
Output:

foo_bar_baz_test
Example (Sort_string_asc)
eval(`sort(strArr, false)`, vals)
Output:

[1 2 3 5]
Example (Sort_string_desc)
eval(`sort(strArr, true)`, vals)
Output:

[5 3 2 1]
Example (Split)
eval(`split("This will be split in:2-parts", ":")`, nil)
Output:

[This will be split in 2-parts]
Example (Sqrt)
eval(`sqrt(16)`, nil)
Output:

4
Example (Strftime)
eval(`strftime(ghd, "%Y-%m-%dT%H:%M:%S")`, exampleTimeParams)
Output:

1993-02-02T06:00:00
Example (StrftimeWithModTime)
eval(`strftime(modTime(ghd, "+30m"), "%Y-%m-%dT%H:%M:%S")`, exampleTimeParams)
Output:

1993-02-02T06:30:00
Example (StrftimeWithStringValue)
eval(`strftime("1993-02-02T06:30:00", "%Y-%m-%dT%H:%M:%S")`, exampleTimeParams)
Output:

1993-02-02T06:30:00
Example (Sub)
eval(`sub(hgp, ghd)`, exampleTimeParams)
Output:

321627600000
Example (SubErrorCheck)
eval(`sub(ghd, hgp)`, exampleTimeParams)
Output:

error: can not evaluate sub(ghd, hgp): expecting 2nd input to be less than 1st input
Example (Substring)
eval(`substring("foo bar baz_test", start, end)`, map[string]interface{}{"start": 2, "end": -1})
Output:

o bar baz_test
Example (Substring_endOverflow)
eval(`substring("foo bar baz_test", start, end)`, map[string]interface{}{"start": 2, "end": 100})
Output:

o bar baz_test
Example (Substring_highStart)
eval(`substring("foo", start, end)`, map[string]interface{}{"start": 3, "end": -1})
Output:

Example (Substring_withEnd)
eval(`substring("foo bar baz_test", start, end)`, map[string]interface{}{"start": 2, "end": 4})
Output:

o b
Example (Sum)
eval(`sum(1, 2, "foo", 3.4, 4, "3")`, 10.4)
Output:

13.4
Example (Title)
eval(`title("foo bAR")`, nil)
Output:

Foo bAR
Example (ToJSON)
var (
	p = map[string]interface{}{
		"vars": Must(NewVars(
			&Vars{value: map[string]TypedValue{
				"k1": &String{value: "v1"},
				"k2": &String{value: "v2"},
			}},
		)),
	}
)

eval(`toJSON(vars)`, p)
Output:

{"k1":{"@value":"v1","@type":"String"},"k2":{"@value":"v2","@type":"String"}}
Example (ToLower)
eval(`toLower("FOO")`, nil)
Output:

foo
Example (ToUpper)
eval(`toUpper("foo")`, nil)
Output:

FOO
Example (Trim)
eval(`trim(" foo ")`, nil)
Output:

foo
Example (TrimLeft)
eval(`trimLeft(" foo ", " ")`, nil)
Output:

foo
Example (TrimRight)
eval(`trimRight(" foo ", " ")`, nil)
Output:

foo
Example (Unix)
eval(`strftime(ghd, "%L")`, exampleTimeParams)
Output:

728650800
Example (Untitle)
eval(`untitle("Foo Bar")`, nil)
Output:

foo Bar

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func AllFunctions

func AllFunctions() []gval.Language

func ArrayFunctions

func ArrayFunctions() []gval.Language

func Assign

func Assign(base TypedValue, path string, val TypedValue) (err error)

func CastToAny

func CastToAny(val interface{}) (interface{}, error)

func CastToBoolean

func CastToBoolean(val interface{}) (out bool, err error)

func CastToBytes

func CastToBytes(val interface{}) (out []byte, err error)

func CastToDateTime

func CastToDateTime(val interface{}) (out *time.Time, err error)

func CastToDuration

func CastToDuration(val interface{}) (out time.Duration, err error)

func CastToFloat

func CastToFloat(val interface{}) (out float64, err error)

func CastToHandle

func CastToHandle(val interface{}) (string, error)

func CastToHttpRequest

func CastToHttpRequest(val interface{}) (out *h.Request, err error)

func CastToID

func CastToID(val interface{}) (out uint64, err error)

func CastToInteger

func CastToInteger(val interface{}) (out int64, err error)

func CastToKV

func CastToKV(val interface{}) (out map[string]string, err error)

func CastToKVV

func CastToKVV(val interface{}) (out map[string][]string, err error)

func CastToMeta

func CastToMeta(val interface{}) (out map[string]any, err error)

func CastToReader

func CastToReader(val interface{}) (out io.Reader, err error)

func CastToString

func CastToString(val interface{}) (out string, err error)

func CastToStringSlice

func CastToStringSlice(val interface{}) (out []string, err error)

func CastToUnsignedInteger

func CastToUnsignedInteger(val interface{}) (out uint64, err error)

func CastToUrl

func CastToUrl(val interface{}) (out *url.URL, err error)

func CastToVars

func CastToVars(val interface{}) (out map[string]TypedValue, err error)

func GenericFunctions

func GenericFunctions() []gval.Language

func Has

func Has(arr interface{}, vv ...interface{}) (b bool, err error)

has finds any occurrence of the values in slice or key in a map

func JsonFunctions

func JsonFunctions() []gval.Language

func KvFunctions

func KvFunctions() []gval.Language

func NewGvalParser

func NewGvalParser() *gvalParser

func NumericFunctions

func NumericFunctions() []gval.Language

func Parser

func Parser() gval.Language

Parser returns global parser instance

func Path

func Path(p string) (out *exprPath)

Path initializes a new exprPath helper to efficiently traverse the path

func PathBase

func PathBase(path string) string

func ResolveTypes

func ResolveTypes(rt resolvableType, resolver func(typ string) Type) error

func StringFunctions

func StringFunctions() []gval.Language

func TimeFunctions

func TimeFunctions() []gval.Language

func UntypedValue

func UntypedValue(val interface{}) interface{}

Types

type Any

type Any struct {
	// contains filtered or unexported fields
}

Any is an expression type, wrapper for interface{} type

func NewAny

func NewAny(val interface{}) (*Any, error)

NewAny creates new instance of Any expression type

func (*Any) Assign

func (t *Any) Assign(val interface{}) error

Assign new value to Any

value is first passed through CastToAny

func (Any) Cast

func (Any) Cast(val interface{}) (TypedValue, error)

Cast converts value to interface{}

func (*Any) Clone

func (v *Any) Clone() (out TypedValue, err error)

func (*Any) Get

func (t *Any) Get() interface{}

Get return underlying value on Any

func (*Any) GetValue

func (t *Any) GetValue() interface{}

GetValue returns underlying value on Any

func (Any) Type

func (Any) Type() string

Type return type name

type Array

type Array struct {
	// contains filtered or unexported fields
}

Array is an expression type, wrapper for []TypedValue type

func NewArray

func NewArray(val interface{}) (*Array, error)

NewArray creates new instance of Array expression type

func (*Array) Assign

func (t *Array) Assign(val interface{}) error

Assign new value to Array

value is first passed through CastToArray

func (Array) Cast

func (Array) Cast(val interface{}) (TypedValue, error)

Cast converts value to []TypedValue

func (*Array) Clone

func (v *Array) Clone() (out TypedValue, err error)

func (*Array) Decode

func (t *Array) Decode(dst reflect.Value) error

func (*Array) Get

func (t *Array) Get() interface{}

Get return underlying value on Array

func (*Array) GetValue

func (t *Array) GetValue() []TypedValue

GetValue returns underlying value on Array

func (Array) Has

func (t Array) Has(k string) bool

Select is field accessor for *types.Record

Similar to SelectGVal but returns typed values

func (Array) MarshalJSON

func (t Array) MarshalJSON() ([]byte, error)

func (*Array) Push

func (t *Array) Push(v TypedValue)

Push appends value to array

func (Array) Select

func (t Array) Select(k string) (TypedValue, error)

Select is field accessor for *types.Array

Similar to SelectGVal but returns typed values

func (Array) SelectGVal

func (t Array) SelectGVal(ctx context.Context, k string) (interface{}, error)

SelectGVal implements gval.Selector requirements

It allows gval lib to access Record's underlying value (*types.Array) and it's fields

func (*Array) Slice

func (t *Array) Slice() []interface{}

func (Array) Type

func (Array) Type() string

Type return type name

type Assigner

type Assigner interface {
	Assign(interface{}) error
}

type Boolean

type Boolean struct {
	// contains filtered or unexported fields
}

Boolean is an expression type, wrapper for bool type

func NewBoolean

func NewBoolean(val interface{}) (*Boolean, error)

NewBoolean creates new instance of Boolean expression type

func (*Boolean) Assign

func (t *Boolean) Assign(val interface{}) error

Assign new value to Boolean

value is first passed through CastToBoolean

func (Boolean) Cast

func (Boolean) Cast(val interface{}) (TypedValue, error)

Cast converts value to bool

func (*Boolean) Clone

func (v *Boolean) Clone() (out TypedValue, err error)

func (Boolean) Compare

func (t Boolean) Compare(to TypedValue) (int, error)

Compare the two Boolean values

func (*Boolean) Get

func (t *Boolean) Get() interface{}

Get return underlying value on Boolean

func (*Boolean) GetValue

func (t *Boolean) GetValue() bool

GetValue returns underlying value on Boolean

func (Boolean) Type

func (Boolean) Type() string

Type return type name

type Bytes

type Bytes struct {
	// contains filtered or unexported fields
}

Bytes is an expression type, wrapper for []byte type

func NewBytes

func NewBytes(val interface{}) (*Bytes, error)

NewBytes creates new instance of Bytes expression type

func (*Bytes) Assign

func (t *Bytes) Assign(val interface{}) error

Assign new value to Bytes

value is first passed through CastToBytes

func (Bytes) Cast

func (Bytes) Cast(val interface{}) (TypedValue, error)

Cast converts value to []byte

func (*Bytes) Clone

func (v *Bytes) Clone() (out TypedValue, err error)

func (*Bytes) Get

func (t *Bytes) Get() interface{}

Get return underlying value on Bytes

func (*Bytes) GetValue

func (t *Bytes) GetValue() []byte

GetValue returns underlying value on Bytes

func (Bytes) Type

func (Bytes) Type() string

Type return type name

type Comparable

type Comparable interface {
	Compare(TypedValue) (int, error)
}

type DateTime

type DateTime struct {
	// contains filtered or unexported fields
}

DateTime is an expression type, wrapper for *time.Time type

func NewDateTime

func NewDateTime(val interface{}) (*DateTime, error)

NewDateTime creates new instance of DateTime expression type

func (*DateTime) Assign

func (t *DateTime) Assign(val interface{}) error

Assign new value to DateTime

value is first passed through CastToDateTime

func (DateTime) Cast

func (DateTime) Cast(val interface{}) (TypedValue, error)

Cast converts value to *time.Time

func (*DateTime) Clone

func (v *DateTime) Clone() (out TypedValue, err error)

func (DateTime) Compare

func (t DateTime) Compare(to TypedValue) (int, error)

Compare the two DateTime values

func (*DateTime) Get

func (t *DateTime) Get() interface{}

Get return underlying value on DateTime

func (*DateTime) GetValue

func (t *DateTime) GetValue() *time.Time

GetValue returns underlying value on DateTime

func (DateTime) Type

func (DateTime) Type() string

Type return type name

type DeepFieldAssigner

type DeepFieldAssigner interface {
	AssignFieldValue(Pather, TypedValue) error
}

type Dict

type Dict interface {
	Dict() map[string]interface{}
}

type Duration

type Duration struct {
	// contains filtered or unexported fields
}

Duration is an expression type, wrapper for time.Duration type

func NewDuration

func NewDuration(val interface{}) (*Duration, error)

NewDuration creates new instance of Duration expression type

func (*Duration) Assign

func (t *Duration) Assign(val interface{}) error

Assign new value to Duration

value is first passed through CastToDuration

func (Duration) Cast

func (Duration) Cast(val interface{}) (TypedValue, error)

Cast converts value to time.Duration

func (*Duration) Clone

func (v *Duration) Clone() (out TypedValue, err error)

func (Duration) Compare

func (t Duration) Compare(to TypedValue) (int, error)

Compare the two Duration values

func (*Duration) Get

func (t *Duration) Get() interface{}

Get return underlying value on Duration

func (*Duration) GetValue

func (t *Duration) GetValue() time.Duration

GetValue returns underlying value on Duration

func (Duration) Type

func (Duration) Type() string

Type return type name

type Evaluable

type Evaluable interface {
	Eval(context.Context, *Vars) (interface{}, error)
	Test(context.Context, *Vars) (bool, error)
}

type Evaluator

type Evaluator interface {
	GetExpr() string
	SetEval(eval Evaluable)
}

type FieldAssigner

type FieldAssigner interface {
	AssignFieldValue(string, TypedValue) error
}

type FieldSelector

type FieldSelector interface {
	Has(k string) bool
	Select(k string) (TypedValue, error)
}

type Float

type Float struct {
	// contains filtered or unexported fields
}

Float is an expression type, wrapper for float64 type

func NewFloat

func NewFloat(val interface{}) (*Float, error)

NewFloat creates new instance of Float expression type

func (*Float) Assign

func (t *Float) Assign(val interface{}) error

Assign new value to Float

value is first passed through CastToFloat

func (Float) Cast

func (Float) Cast(val interface{}) (TypedValue, error)

Cast converts value to float64

func (*Float) Clone

func (v *Float) Clone() (out TypedValue, err error)

func (Float) Compare

func (t Float) Compare(to TypedValue) (int, error)

Compare the two Float values

func (*Float) Get

func (t *Float) Get() interface{}

Get return underlying value on Float

func (*Float) GetValue

func (t *Float) GetValue() float64

GetValue returns underlying value on Float

func (Float) Type

func (Float) Type() string

Type return type name

type Handle

type Handle struct {
	// contains filtered or unexported fields
}

Handle is an expression type, wrapper for string type

func NewHandle

func NewHandle(val interface{}) (*Handle, error)

NewHandle creates new instance of Handle expression type

func (*Handle) Assign

func (t *Handle) Assign(val interface{}) error

Assign new value to Handle

value is first passed through CastToHandle

func (Handle) Cast

func (Handle) Cast(val interface{}) (TypedValue, error)

Cast converts value to string

func (*Handle) Clone

func (v *Handle) Clone() (out TypedValue, err error)

func (Handle) Compare

func (t Handle) Compare(to TypedValue) (int, error)

Compare the two Handle values

func (*Handle) Get

func (t *Handle) Get() interface{}

Get return underlying value on Handle

func (*Handle) GetValue

func (t *Handle) GetValue() string

GetValue returns underlying value on Handle

func (Handle) Type

func (Handle) Type() string

Type return type name

type HttpRequest

type HttpRequest struct {
	// contains filtered or unexported fields
}

HttpRequest is an expression type, wrapper for *http.Request type

func NewHttpRequest

func NewHttpRequest(val interface{}) (*HttpRequest, error)

NewHttpRequest creates new instance of HttpRequest expression type

func (*HttpRequest) Assign

func (t *HttpRequest) Assign(val interface{}) error

Assign new value to HttpRequest

value is first passed through CastToHttpRequest

func (*HttpRequest) AssignFieldValue

func (t *HttpRequest) AssignFieldValue(key string, val TypedValue) error

func (HttpRequest) Cast

func (HttpRequest) Cast(val interface{}) (TypedValue, error)

Cast converts value to *http.Request

func (*HttpRequest) Clone

func (v *HttpRequest) Clone() (out TypedValue, err error)

func (*HttpRequest) Get

func (t *HttpRequest) Get() interface{}

Get return underlying value on HttpRequest

func (*HttpRequest) GetValue

func (t *HttpRequest) GetValue() *http.Request

GetValue returns underlying value on HttpRequest

func (*HttpRequest) Has

func (t *HttpRequest) Has(k string) bool

func (*HttpRequest) Select

func (t *HttpRequest) Select(k string) (TypedValue, error)

Select is field accessor for *http.Request

Similar to SelectGVal but returns typed values

func (*HttpRequest) SelectGVal

func (t *HttpRequest) SelectGVal(ctx context.Context, k string) (interface{}, error)

SelectGVal implements gval.Selector requirements

It allows gval lib to access HttpRequest's underlying value (*http.Request) and it's fields

func (HttpRequest) Type

func (HttpRequest) Type() string

Type return type name

type ID

type ID struct {
	// contains filtered or unexported fields
}

ID is an expression type, wrapper for uint64 type

func NewID

func NewID(val interface{}) (*ID, error)

NewID creates new instance of ID expression type

func (*ID) Assign

func (t *ID) Assign(val interface{}) error

Assign new value to ID

value is first passed through CastToID

func (ID) Cast

func (ID) Cast(val interface{}) (TypedValue, error)

Cast converts value to uint64

func (*ID) Clone

func (v *ID) Clone() (out TypedValue, err error)

func (ID) Compare

func (t ID) Compare(to TypedValue) (int, error)

Compare the two ID values

func (*ID) Get

func (t *ID) Get() interface{}

Get return underlying value on ID

func (*ID) GetValue

func (t *ID) GetValue() uint64

GetValue returns underlying value on ID

func (ID) MarshalJSON

func (t ID) MarshalJSON() ([]byte, error)

func (ID) Type

func (ID) Type() string

Type return type name

type Integer

type Integer struct {
	// contains filtered or unexported fields
}

Integer is an expression type, wrapper for int64 type

func NewInteger

func NewInteger(val interface{}) (*Integer, error)

NewInteger creates new instance of Integer expression type

func (*Integer) Assign

func (t *Integer) Assign(val interface{}) error

Assign new value to Integer

value is first passed through CastToInteger

func (Integer) Cast

func (Integer) Cast(val interface{}) (TypedValue, error)

Cast converts value to int64

func (*Integer) Clone

func (v *Integer) Clone() (out TypedValue, err error)

func (Integer) Compare

func (t Integer) Compare(to TypedValue) (int, error)

Compare the two Integer values

func (*Integer) Get

func (t *Integer) Get() interface{}

Get return underlying value on Integer

func (*Integer) GetValue

func (t *Integer) GetValue() int64

GetValue returns underlying value on Integer

func (Integer) Type

func (Integer) Type() string

Type return type name

type Iterator

type Iterator interface {
	Each(func(k string, v TypedValue) error) error
}

type KV

type KV struct {
	// contains filtered or unexported fields
}

KV is an expression type, wrapper for map[string]string type

func EmptyKV

func EmptyKV() *KV

func NewKV

func NewKV(val interface{}) (*KV, error)

NewKV creates new instance of KV expression type

func (*KV) Assign

func (t *KV) Assign(val interface{}) error

Assign new value to KV

value is first passed through CastToKV

func (*KV) AssignFieldValue

func (t *KV) AssignFieldValue(key string, val TypedValue) error

func (KV) Cast

func (KV) Cast(val interface{}) (TypedValue, error)

Cast converts value to map[string]string

func (*KV) Clone

func (v *KV) Clone() (out TypedValue, err error)

func (*KV) Delete

func (t *KV) Delete(keys ...string) (out TypedValue, err error)

Delete take keys returns KV without those key value pair

func (*KV) Each

func (t *KV) Each(fn func(k string, v TypedValue) error) (err error)

func (*KV) Filter

func (t *KV) Filter(keys ...string) (out TypedValue, err error)

Filter take keys returns KV with only those key value pair

func (*KV) Get

func (t *KV) Get() interface{}

Get return underlying value on KV

func (*KV) GetValue

func (t *KV) GetValue() map[string]string

GetValue returns underlying value on KV

func (*KV) Has

func (t *KV) Has(k string) bool

func (*KV) Merge

func (t *KV) Merge(nn ...Iterator) (out TypedValue, err error)

Merge combines the given KVs into KV NOTE: It will return CLONE of the original KV, if its called without any parameters

func (*KV) Select

func (t *KV) Select(k string) (TypedValue, error)

func (*KV) SelectGVal

func (t *KV) SelectGVal(_ context.Context, k string) (interface{}, error)

func (KV) Type

func (KV) Type() string

Type return type name

type KVV

type KVV struct {
	// contains filtered or unexported fields
}

KVV is an expression type, wrapper for map[string][]string type

func EmptyKVV

func EmptyKVV() *KVV

func NewKVV

func NewKVV(val interface{}) (*KVV, error)

NewKVV creates new instance of KVV expression type

func (*KVV) Assign

func (t *KVV) Assign(val interface{}) error

Assign new value to KVV

value is first passed through CastToKVV

func (*KVV) AssignFieldValue

func (t *KVV) AssignFieldValue(p Pather, val TypedValue) error

func (KVV) Cast

func (KVV) Cast(val interface{}) (TypedValue, error)

Cast converts value to map[string][]string

func (*KVV) Clone

func (v *KVV) Clone() (out TypedValue, err error)

func (*KVV) Delete

func (t *KVV) Delete(keys ...string) (out TypedValue, err error)

Delete take keys returns KVV without those key value pair

func (*KVV) Each

func (t *KVV) Each(fn func(k string, v TypedValue) error) (err error)

func (*KVV) Filter

func (t *KVV) Filter(keys ...string) (out TypedValue, err error)

Filter take keys returns KVV with only those key value pair

func (*KVV) Get

func (t *KVV) Get() interface{}

Get return underlying value on KVV

func (*KVV) GetValue

func (t *KVV) GetValue() map[string][]string

GetValue returns underlying value on KVV

func (*KVV) Merge

func (t *KVV) Merge(nn ...Iterator) (out TypedValue, err error)

Merge combines the given KVVs into KVV NOTE: It will return CLONE of the original KVV, if its called without any parameters

func (*KVV) Select

func (t *KVV) Select(k string) (TypedValue, error)

func (*KVV) SelectGVal

func (t *KVV) SelectGVal(_ context.Context, k string) (interface{}, error)

func (KVV) Type

func (KVV) Type() string

Type return type name

type Meta

type Meta struct {
	// contains filtered or unexported fields
}

Meta is an expression type, wrapper for map[string]any type

func NewMeta

func NewMeta(val interface{}) (*Meta, error)

NewMeta creates new instance of Meta expression type

func (*Meta) Assign

func (t *Meta) Assign(val interface{}) error

Assign new value to Meta

value is first passed through CastToMeta

func (Meta) Cast

func (Meta) Cast(val interface{}) (TypedValue, error)

Cast converts value to map[string]any

func (*Meta) Clone

func (v *Meta) Clone() (out TypedValue, err error)

func (*Meta) Get

func (t *Meta) Get() interface{}

Get return underlying value on Meta

func (*Meta) GetValue

func (t *Meta) GetValue() map[string]any

GetValue returns underlying value on Meta

func (Meta) Type

func (Meta) Type() string

Type return type name

type Parsable

type Parsable interface {
	Parse(string) (Evaluable, error)
	ParseEvaluators(ee ...Evaluator) error
}

func NewParser

func NewParser() Parsable

type Pather

type Pather interface {
	String() string
	More() bool
	IsLast() bool
	Get() string
	Rest() string
	Next() (err error)
}

type Reader

type Reader struct {
	// contains filtered or unexported fields
}

Reader is an expression type, wrapper for io.Reader type

func NewReader

func NewReader(val interface{}) (*Reader, error)

NewReader creates new instance of Reader expression type

func (*Reader) Assign

func (t *Reader) Assign(val interface{}) error

Assign new value to Reader

value is first passed through CastToReader

func (Reader) Cast

func (Reader) Cast(val interface{}) (TypedValue, error)

Cast converts value to io.Reader

func (*Reader) Clone

func (v *Reader) Clone() (out TypedValue, err error)

func (*Reader) Get

func (t *Reader) Get() interface{}

Get return underlying value on Reader

func (*Reader) GetValue

func (t *Reader) GetValue() io.Reader

GetValue returns underlying value on Reader

func (Reader) Type

func (Reader) Type() string

Type return type name

type Slice

type Slice interface {
	Slice() []interface{}
}

type String

type String struct {
	// contains filtered or unexported fields
}

String is an expression type, wrapper for string type

func NewString

func NewString(val interface{}) (*String, error)

NewString creates new instance of String expression type

func (*String) Assign

func (t *String) Assign(val interface{}) error

Assign new value to String

value is first passed through CastToString

func (String) Cast

func (String) Cast(val interface{}) (TypedValue, error)

Cast converts value to string

func (*String) Clone

func (v *String) Clone() (out TypedValue, err error)

func (String) Compare

func (t String) Compare(to TypedValue) (int, error)

Compare the two String values

func (*String) Get

func (t *String) Get() interface{}

Get return underlying value on String

func (*String) GetValue

func (t *String) GetValue() string

GetValue returns underlying value on String

func (String) Type

func (String) Type() string

Type return type name

type Type

type Type interface {
	Type() string
	Cast(interface{}) (TypedValue, error)
}

type TypeValueDecoder

type TypeValueDecoder interface {
	Decode(dst reflect.Value) error
}

type TypedValue

type TypedValue interface {
	Type
	Assigner
	Clone() (TypedValue, error)
	Get() interface{}
}

func CastToArray

func CastToArray(val interface{}) (out []TypedValue, err error)

func Must

func Must(v TypedValue, err error) TypedValue

func NewUnresolved

func NewUnresolved(typ string, val interface{}) (TypedValue, error)

NewUnresolved creates new instance of Unresolved expression type

func Select

func Select(base TypedValue, path string) (out TypedValue, err error)

func Typify

func Typify(in interface{}) (tv TypedValue, err error)

Typify detects input type and wraps it with expression type

type Unresolved

type Unresolved struct {
	// contains filtered or unexported fields
}

Unresolved is a special type that holds value + type it needs to be resolved to

This solves problem with typed value serialization

func (*Unresolved) Assign

func (t *Unresolved) Assign(interface{}) (err error)

func (Unresolved) Cast

func (Unresolved) Cast(interface{}) (TypedValue, error)

Casts value to interface{}

func (Unresolved) Clone

func (v Unresolved) Clone() (out TypedValue, err error)

func (Unresolved) Get

func (t Unresolved) Get() interface{}

Returns underlying value on Unresolved

func (Unresolved) Type

func (t Unresolved) Type() string

Returns type name

type UnsignedInteger

type UnsignedInteger struct {
	// contains filtered or unexported fields
}

UnsignedInteger is an expression type, wrapper for uint64 type

func NewUnsignedInteger

func NewUnsignedInteger(val interface{}) (*UnsignedInteger, error)

NewUnsignedInteger creates new instance of UnsignedInteger expression type

func (*UnsignedInteger) Assign

func (t *UnsignedInteger) Assign(val interface{}) error

Assign new value to UnsignedInteger

value is first passed through CastToUnsignedInteger

func (UnsignedInteger) Cast

func (UnsignedInteger) Cast(val interface{}) (TypedValue, error)

Cast converts value to uint64

func (*UnsignedInteger) Clone

func (v *UnsignedInteger) Clone() (out TypedValue, err error)

func (UnsignedInteger) Compare

func (t UnsignedInteger) Compare(to TypedValue) (int, error)

Compare the two UnsignedInteger values

func (*UnsignedInteger) Get

func (t *UnsignedInteger) Get() interface{}

Get return underlying value on UnsignedInteger

func (*UnsignedInteger) GetValue

func (t *UnsignedInteger) GetValue() uint64

GetValue returns underlying value on UnsignedInteger

func (UnsignedInteger) Type

func (UnsignedInteger) Type() string

Type return type name

type Url

type Url struct {
	// contains filtered or unexported fields
}

Url is an expression type, wrapper for *url.URL type

func NewUrl

func NewUrl(val interface{}) (*Url, error)

NewUrl creates new instance of Url expression type

func (*Url) Assign

func (t *Url) Assign(val interface{}) error

Assign new value to Url

value is first passed through CastToUrl

func (Url) Cast

func (Url) Cast(val interface{}) (TypedValue, error)

Cast converts value to *url.URL

func (*Url) Clone

func (v *Url) Clone() (out TypedValue, err error)

func (*Url) Get

func (t *Url) Get() interface{}

Get return underlying value on Url

func (*Url) GetValue

func (t *Url) GetValue() *url.URL

GetValue returns underlying value on Url

func (Url) Type

func (Url) Type() string

Type return type name

type Vars

type Vars struct {
	// contains filtered or unexported fields
}

Vars is an expression type, wrapper for map[string]TypedValue type

func EmptyVars

func EmptyVars() *Vars

func NewVars

func NewVars(val interface{}) (*Vars, error)

NewVars creates new instance of Vars expression type

func (*Vars) Assign

func (t *Vars) Assign(val interface{}) error

Assign new value to Vars

value is first passed through CastToVars

func (*Vars) AssignFieldValue

func (t *Vars) AssignFieldValue(key string, val TypedValue) (err error)

func (Vars) Cast

func (Vars) Cast(val interface{}) (TypedValue, error)

Cast converts value to map[string]TypedValue

func (*Vars) Clone

func (v *Vars) Clone() (out TypedValue, err error)

func (*Vars) Copy

func (t *Vars) Copy(dst *Vars, kk ...string)

Copy takes base variables and copies all to dst

func (*Vars) Decode

func (t *Vars) Decode(dst interface{}) (err error)

func (*Vars) Delete

func (t *Vars) Delete(keys ...string) (out TypedValue, err error)

Delete take keys returns Vars without those key value pair

func (*Vars) Dict

func (t *Vars) Dict() (out map[string]interface{})

func (*Vars) Each

func (t *Vars) Each(fn func(k string, v TypedValue) error) (err error)

func (*Vars) Filter

func (t *Vars) Filter(keys ...string) (out TypedValue, err error)

Filter take keys returns Vars with only those key value pair

func (*Vars) Get

func (t *Vars) Get() interface{}

Get return underlying value on Vars

func (*Vars) GetValue

func (t *Vars) GetValue() map[string]TypedValue

GetValue returns underlying value on Vars

func (*Vars) Has

func (t *Vars) Has(key string) bool

Has returns true key is present

func (*Vars) HasAll

func (t *Vars) HasAll(key string, kk ...string) bool

HasAll returns true if all keys are present

func (*Vars) HasAny

func (t *Vars) HasAny(key string, kk ...string) bool

HasAny returns true if all keys are present

func (*Vars) IsEmpty

func (t *Vars) IsEmpty() bool

func (*Vars) Len

func (t *Vars) Len() (out int)

func (*Vars) MarshalJSON

func (t *Vars) MarshalJSON() (out []byte, err error)

MarshalJSON returns JSON encoding of expression

func (*Vars) Merge

func (t *Vars) Merge(nn ...Iterator) (out TypedValue, err error)

Merge combines the given Vars(es) into Vars NOTE: It will return CLONE of the original Vars, if it's called without any parameters

func (*Vars) MustMerge

func (t *Vars) MustMerge(nn ...Iterator) *Vars

MustMerge returns Vars after merging the given Vars(es) into it

func (*Vars) ResolveTypes

func (t *Vars) ResolveTypes(res func(typ string) Type) (err error)

func (*Vars) Scan

func (t *Vars) Scan(src any) error

func (*Vars) Select

func (t *Vars) Select(k string) (out TypedValue, err error)

func (*Vars) SelectGVal

func (t *Vars) SelectGVal(_ context.Context, k string) (out interface{}, err error)

func (*Vars) Set

func (t *Vars) Set(k string, v interface{}) (err error)

Set or update the specific key value in Vars

func (Vars) Type

func (Vars) Type() string

Type return type name

func (*Vars) UnmarshalJSON

func (t *Vars) UnmarshalJSON(in []byte) (err error)

UnmarshalJSON unmarshal JSON value into Vars

func (*Vars) Value

func (t *Vars) Value() (driver.Value, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL