Documentation ¶
Overview ¶
Package values is an internal package that defines methods such as sorting, comparison, and type conversion, that apply to interface types.
It is similar to, and makes heavy use of, the reflect package.
Since the intent is to provide runtime services for the Liquid expression interpreter, this package does not implement "generic" generics. It attempts to implement Liquid semantics (which are largely Ruby semantics).
Index ¶
- func Call(fn reflect.Value, args []interface{}) (interface{}, error)
- func Convert(value interface{}, typ reflect.Type) (interface{}, error)
- func Equal(a, b interface{}) bool
- func IsEmpty(value interface{}) bool
- func Length(value interface{}) int
- func Less(a, b interface{}) bool
- func MustConvert(value interface{}, t reflect.Type) interface{}
- func MustConvertItem(item interface{}, array interface{}) interface{}
- func ParseDate(s string) (time.Time, error)
- func Sort(data []interface{})
- func SortByProperty(data []interface{}, key string, nilFirst bool)
- func ToLiquid(value interface{}) interface{}
- type CallParityError
- type Range
- type TypeError
- type Value
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Call ¶
Call applies a function to arguments, converting them as necessary.
The conversion follows Liquid (Ruby?) semantics, which are more aggressive than Go conversion.
The function should return one or two values; the second value, if present, should be an error.
func Convert ¶
Convert value to the type. This is a more aggressive conversion, that will recursively create new map and slice values as necessary. It doesn't handle circular references.
func Equal ¶
func Equal(a, b interface{}) bool
Equal returns a bool indicating whether a == b after conversion.
func IsEmpty ¶
func IsEmpty(value interface{}) bool
IsEmpty returns a bool indicating whether the value is empty according to Liquid semantics.
func Length ¶
func Length(value interface{}) int
Length returns the length of a string or array. In keeping with Liquid semantics, and contra Go, it does not return the size of a map.
func MustConvert ¶
MustConvert is like Convert, but panics if conversion fails.
func MustConvertItem ¶
func MustConvertItem(item interface{}, array interface{}) interface{}
MustConvertItem converts item to conform to the type array's element, else panics. Unlike MustConvert, the second argument is a value not a type.
func SortByProperty ¶
SortByProperty sorts maps on their key indices.
Types ¶
type CallParityError ¶
type CallParityError struct{ NumArgs, NumParams int }
A CallParityError is a mismatch between the argument and parameter counts.
func (*CallParityError) Error ¶
func (e *CallParityError) Error() string
type Range ¶
type Range struct {
// contains filtered or unexported fields
}
A Range is the range of integers from b to e inclusive.