values

package
v0.40.1 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2019 License: MIT Imports: 12 Imported by: 30

Documentation

Overview

Package values declares the flux data types and implements them.

Index

Constants

This section is empty.

Variables

View Source
var (
	// InvalidValue is a non nil value who's type is semantic.Invalid
	InvalidValue = value{/* contains filtered or unexported fields */}

	// Null is an untyped nil value.
	Null = value{/* contains filtered or unexported fields */}
)

Functions

func AssignableTo added in v0.33.0

func AssignableTo(V, T semantic.Type) bool

AssignableTo returns true if type V is assignable to type T.

func BuildExternAssignments added in v0.40.0

func BuildExternAssignments(node semantic.Node, scope Scope) semantic.Node

BuildExternAssignments constructs nested semantic.ExternAssignment nodes mirroring the nested structure of the scope.

func CheckKind

func CheckKind(got, exp semantic.Nature)

CheckKind panics if got != exp.

func FormattedScope added in v0.40.0

func FormattedScope(scope Scope) fmt.Formatter

FormattedScope produces a fmt.Formatter for pretty printing a scope.

func NewObject

func NewObject() *object

func NewObjectWithBacking added in v0.14.0

func NewObjectWithBacking(size int) *object

func NewObjectWithValues

func NewObjectWithValues(vals map[string]Value) *object

func UnexpectedKind

func UnexpectedKind(got, exp semantic.Nature) error

Types

type Array

type Array interface {
	Value
	Get(i int) Value
	Set(i int, v Value)
	Append(v Value)
	Len() int
	Range(func(i int, v Value))
	Sort(func(i, j Value) bool)
}

Array represents an sequence of elements All elements must be the same type

func NewArray

func NewArray(elementType semantic.Type) Array

func NewArrayWithBacking

func NewArrayWithBacking(elementType semantic.Type, elements []Value) Array

type BinaryFuncSignature

type BinaryFuncSignature struct {
	Operator    ast.OperatorKind
	Left, Right semantic.Nature
}

type BinaryFunction

type BinaryFunction func(l, r Value) (Value, error)

func LookupBinaryFunction

func LookupBinaryFunction(sig BinaryFuncSignature) (BinaryFunction, error)

LookupBinaryFunction returns an appropriate binary function that evaluates two values and returns another value. If the two types are not compatible with the given operation, this returns an error.

type Duration

type Duration int64

func ParseDuration

func ParseDuration(s string) (Duration, error)

func (Duration) Duration

func (d Duration) Duration() time.Duration

func (Duration) String

func (d Duration) String() string

type Function

type Function interface {
	Value
	HasSideEffect() bool
	Call(args Object) (Value, error)
}

Function represents a callable type

func NewFunction

func NewFunction(name string, typ semantic.PolyType, call func(args Object) (Value, error), sideEffect bool) Function

NewFunction returns a new function value

type Object

type Object interface {
	Value
	Get(name string) (Value, bool)
	Set(name string, v Value)
	Len() int
	Range(func(name string, v Value))
}

type Scope added in v0.40.0

type Scope interface {
	// Lookup a name in the scope
	Lookup(name string) (Value, bool)

	// LocalLookup a name in current scope only
	LocalLookup(name string) (Value, bool)

	// Bind a variable in the current scope
	Set(name string, v Value)

	// Create a new scope by nesting the current scope
	// If the passed in object is not nil, its values will be added to the new nested scope.
	Nest(Object) Scope

	// Return the parent of the current scope
	Pop() Scope

	// Number of visible names in scope
	Size() int

	// Range over all variable bindings in scope applying f
	Range(f func(k string, v Value))

	// Range over all variable bindings only in the current scope
	LocalRange(f func(k string, v Value))

	// Set the return value of the scope
	SetReturn(Value)

	// Retrieve the return values of the scope
	Return() Value

	// Create a copy of the scope
	Copy() Scope
}

func NewNestedScope added in v0.40.0

func NewNestedScope(s Scope, obj Object) Scope

func NewScope added in v0.40.0

func NewScope() Scope

type Time

type Time int64

func ConvertTime

func ConvertTime(t time.Time) Time

func ParseTime

func ParseTime(s string) (Time, error)

func (Time) Add

func (t Time) Add(d Duration) Time

func (Time) Remainder added in v0.19.0

func (t Time) Remainder(d Duration) (r Duration)

remainder divides t by d and returns the remainder.

func (Time) Round

func (t Time) Round(d Duration) Time

func (Time) String

func (t Time) String() string

func (Time) Time

func (t Time) Time() time.Time

func (Time) Truncate

func (t Time) Truncate(d Duration) Time

type Typer

type Typer interface {
	Type() semantic.Type
	PolyType() semantic.PolyType
}

type Value

type Value interface {
	Typer
	IsNull() bool
	Str() string
	Bytes() []byte
	Int() int64
	UInt() uint64
	Float() float64
	Bool() bool
	Time() Time
	Duration() Duration
	Regexp() *regexp.Regexp
	Array() Array
	Object() Object
	Function() Function
	Equal(Value) bool
}

func New

func New(v interface{}) Value

New constructs a new Value by inferring the type from the interface. If the interface does not translate to a valid Value type, then InvalidValue is returned.

func NewBool

func NewBool(v bool) Value

func NewBytes added in v0.40.0

func NewBytes(v []byte) Value

func NewDuration

func NewDuration(v Duration) Value

func NewFloat

func NewFloat(v float64) Value

func NewFromString added in v0.23.0

func NewFromString(t semantic.Type, s string) (Value, error)

func NewInt

func NewInt(v int64) Value

func NewNull added in v0.14.0

func NewNull(t semantic.Type) Value

func NewRegexp

func NewRegexp(v *regexp.Regexp) Value

func NewString

func NewString(v string) Value

func NewTime

func NewTime(v Time) Value

func NewUInt

func NewUInt(v uint64) Value

type ValueStringer added in v0.23.0

type ValueStringer interface {
	String() string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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