values

package
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: Nov 6, 2024 License: MIT Imports: 10 Imported by: 65

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func Call

func Call(fn reflect.Value, args []any) (any, error)

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

func Convert(value any, typ reflect.Type) (any, error)

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. #nosec G115

func Equal

func Equal(a, b any) bool

Equal returns a bool indicating whether a == b after conversion.

func IsEmpty

func IsEmpty(value any) bool

IsEmpty returns a bool indicating whether the value is empty according to Liquid semantics.

func Length

func Length(value any) 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 Less

func Less(a, b any) bool

Less returns a bool indicating whether a < b.

func MustConvert

func MustConvert(value any, t reflect.Type) any

MustConvert is like Convert, but panics if conversion fails.

func MustConvertItem

func MustConvertItem(item any, array any) any

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 ParseDate

func ParseDate(s string) (time.Time, error)

ParseDate tries a few heuristics to parse a date from a string

func Sort

func Sort(data []any)

Sort any []any value.

func SortByProperty

func SortByProperty(data []any, key string, nilFirst bool)

SortByProperty sorts maps on their key indices.

func ToLiquid

func ToLiquid(value any) any

ToLiquid converts an object to Liquid, if it implements the Drop interface.

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.

func NewRange

func NewRange(b, e int) Range

NewRange returns a new Range

func (Range) AsArray added in v1.3.2

func (r Range) AsArray() []any

AsArray converts the range into an array.

func (Range) Index

func (r Range) Index(i int) any

Index is in the iteration interface

func (Range) Len

func (r Range) Len() int

Len is in the iteration interface

type TypeError

type TypeError string

A TypeError is an error during type conversion.

func (TypeError) Error

func (e TypeError) Error() string

type Value

type Value interface {
	// Value retrieval
	Interface() any
	Int() int

	// Comparison
	Equal(Value) bool
	Less(Value) bool

	Contains(Value) bool
	IndexValue(Value) Value
	PropertyValue(Value) Value

	// Predicate
	Test() bool
}

A Value is a Liquid runtime value.

func ValueOf

func ValueOf(value any) Value

ValueOf returns a Value that wraps its argument. If the argument is already a Value, it returns this.

Jump to

Keyboard shortcuts

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