Documentation
¶
Overview ¶
Package object defines all available object types in Tamarin.
For external users of Tamarin, most often an object.Object interface will be type asserted to a specific object type, such as *object.Float.
For example:
switch obj := obj.(type) {
case *object.String:
// do something with obj.Value
case *object.Float:
// do something with obj.Value
}
The Type() method of each object may also be used to get a string name of the object type, such as "STRING" or "FLOAT".
Index ¶
- Constants
- Variables
- func AsList(obj Object) (*List, *Error)
- func AsMap(obj Object) (*Map, *Error)
- func AsSet(obj Object) (*Set, *Error)
- func CompareTypes(a, b Object) int
- func Equals(a, b Object) bool
- func IsError(obj Object) bool
- func ResolveIndex(idx int64, size int64) (int64, error)
- func ResolveIntSlice(slice Slice, size int64) (start int64, stop int64, err error)
- func WithCallFunc(ctx context.Context, fn CallFunc) context.Context
- type Bool
- func (b *Bool) Compare(other Object) (int, error)
- func (b *Bool) Equals(other Object) Object
- func (b *Bool) GetAttr(name string) (Object, bool)
- func (b *Bool) HashKey() HashKey
- func (b *Bool) Inspect() string
- func (b *Bool) Interface() interface{}
- func (b *Bool) IsTruthy() bool
- func (b *Bool) String() string
- func (b *Bool) Type() Type
- func (b *Bool) Value() bool
- type BooleanConverter
- type Builtin
- func (b *Builtin) Call(ctx context.Context, args ...Object) Object
- func (b *Builtin) Equals(other Object) Object
- func (b *Builtin) GetAttr(name string) (Object, bool)
- func (b *Builtin) Inspect() string
- func (b *Builtin) Interface() interface{}
- func (b *Builtin) IsErrorHandler() bool
- func (b *Builtin) IsTruthy() bool
- func (b *Builtin) Key() string
- func (b *Builtin) Name() string
- func (b *Builtin) String() string
- func (b *Builtin) Type() Type
- func (b *Builtin) Value() BuiltinFunction
- type BuiltinFunction
- type CallFunc
- type Comparable
- type Container
- type ContextConverter
- type Control
- func (c *Control) Equals(other Object) Object
- func (c *Control) GetAttr(name string) (Object, bool)
- func (c *Control) Inspect() string
- func (c *Control) Interface() interface{}
- func (c *Control) IsTruthy() bool
- func (c *Control) Keyword() string
- func (c *Control) String() string
- func (c *Control) Type() Type
- func (c *Control) Value() Object
- type DefaultTypeRegistry
- type Entry
- type Error
- func AsFloat(obj Object) (float64, *Error)
- func AsInt(obj Object) (int64, *Error)
- func AsString(obj Object) (result string, err *Error)
- func AsTime(obj Object) (result time.Time, err *Error)
- func Errorf(format string, a ...interface{}) *Error
- func NewArgsError(fn string, takes, given int) *Error
- func NewArgsRangeError(fn string, takesMin, takesMax, given int) *Error
- func NewError(err error) *Error
- func Sort(items []Object) *Error
- func (e *Error) Compare(other Object) (int, error)
- func (e *Error) Equals(other Object) Object
- func (e *Error) GetAttr(name string) (Object, bool)
- func (e *Error) Inspect() string
- func (e *Error) Interface() interface{}
- func (e *Error) IsTruthy() bool
- func (e *Error) Message() *String
- func (e *Error) String() string
- func (e *Error) Type() Type
- func (e *Error) Value() error
- type ErrorConverter
- type Float
- func (f *Float) Compare(other Object) (int, error)
- func (f *Float) Equals(other Object) Object
- func (f *Float) GetAttr(name string) (Object, bool)
- func (f *Float) HashKey() HashKey
- func (f *Float) Inspect() string
- func (f *Float) Interface() interface{}
- func (f *Float) IsTruthy() bool
- func (f *Float) String() string
- func (f *Float) Type() Type
- func (f *Float) Value() float64
- type Float32Converter
- type Float64Converter
- type Function
- func (f *Function) Body() *ast.Block
- func (f *Function) Defaults() map[string]ast.Expression
- func (f *Function) Equals(other Object) Object
- func (f *Function) GetAttr(name string) (Object, bool)
- func (f *Function) Inspect() string
- func (f *Function) Interface() interface{}
- func (f *Function) IsTruthy() bool
- func (f *Function) Name() string
- func (f *Function) Parameters() []*ast.Ident
- func (f *Function) Scope() Scope
- func (f *Function) Type() Type
- type GoAttr
- type GoAttrType
- type GoField
- type GoMethod
- type GoType
- func (gt *GoType) AttrByName(name string) (GoAttr, bool)
- func (gt *GoType) Attrs() []GoAttr
- func (gt *GoType) FieldByName(name string) (*GoField, bool)
- func (gt *GoType) Fields() []*GoField
- func (gt *GoType) MethodByName(name string) (*GoMethod, bool)
- func (gt *GoType) Methods() []*GoMethod
- func (gt *GoType) Name() string
- func (gt *GoType) StructType() reflect.Type
- func (gt *GoType) Type() reflect.Type
- type GoTypeRegistry
- type HashKey
- type Hashable
- type HttpResponse
- func (r *HttpResponse) ContentLength() *Int
- func (r *HttpResponse) Equals(other Object) Object
- func (r *HttpResponse) GetAttr(name string) (Object, bool)
- func (r *HttpResponse) Header() *Map
- func (r *HttpResponse) Inspect() string
- func (r *HttpResponse) Interface() interface{}
- func (r *HttpResponse) IsTruthy() bool
- func (r *HttpResponse) JSON() *Result
- func (r *HttpResponse) Proto() *String
- func (r *HttpResponse) Status() *String
- func (r *HttpResponse) StatusCode() *Int
- func (r *HttpResponse) Text() *Result
- func (r *HttpResponse) Type() Type
- type Int
- func (i *Int) Compare(other Object) (int, error)
- func (i *Int) Equals(other Object) Object
- func (i *Int) GetAttr(name string) (Object, bool)
- func (i *Int) HashKey() HashKey
- func (i *Int) Inspect() string
- func (i *Int) Interface() interface{}
- func (i *Int) IsTruthy() bool
- func (i *Int) String() string
- func (i *Int) Type() Type
- func (i *Int) Value() int64
- type Int64Converter
- type IntConverter
- type Iterator
- type IteratorEntry
- type List
- func (ls *List) Append(obj Object)
- func (ls *List) Clear()
- func (ls *List) Compare(other Object) (int, error)
- func (ls *List) Contains(item Object) *Bool
- func (ls *List) Copy() *List
- func (ls *List) Count(obj Object) int64
- func (ls *List) DelItem(key Object) *Error
- func (ls *List) Each(ctx context.Context, fn Object) Object
- func (ls *List) Equals(other Object) Object
- func (ls *List) Extend(other *List)
- func (ls *List) Filter(ctx context.Context, fn Object) Object
- func (ls *List) GetAttr(name string) (Object, bool)
- func (ls *List) GetItem(key Object) (Object, *Error)
- func (ls *List) GetSlice(s Slice) (Object, *Error)
- func (ls *List) Index(obj Object) int64
- func (ls *List) Insert(index int64, obj Object)
- func (ls *List) Inspect() string
- func (ls *List) Interface() interface{}
- func (ls *List) IsTruthy() bool
- func (ls *List) Iter() Iterator
- func (ls *List) Keys() Object
- func (ls *List) Len() *Int
- func (ls *List) Map(ctx context.Context, fn Object) Object
- func (ls *List) Pop(index int64) Object
- func (ls *List) Remove(obj Object)
- func (ls *List) Reverse()
- func (ls *List) Reversed() *List
- func (ls *List) SetItem(key, value Object) *Error
- func (ls *List) String() string
- func (ls *List) Type() Type
- func (ls *List) Value() []Object
- type ListIter
- func (iter *ListIter) Equals(other Object) Object
- func (iter *ListIter) GetAttr(name string) (Object, bool)
- func (iter *ListIter) Inspect() string
- func (iter *ListIter) Interface() interface{}
- func (iter *ListIter) IsTruthy() bool
- func (iter *ListIter) Next() (IteratorEntry, bool)
- func (iter *ListIter) Type() Type
- type Map
- func (m *Map) Clear()
- func (m *Map) Contains(key Object) *Bool
- func (m *Map) Copy() *Map
- func (m *Map) DelItem(key Object) *Error
- func (m *Map) Delete(key string) Object
- func (m *Map) Equals(other Object) Object
- func (m *Map) Get(key string) Object
- func (m *Map) GetAttr(name string) (Object, bool)
- func (m *Map) GetItem(key Object) (Object, *Error)
- func (m *Map) GetSlice(s Slice) (Object, *Error)
- func (m *Map) GetWithDefault(key string, defaultValue Object) Object
- func (m *Map) GetWithObject(key *String) Object
- func (m *Map) Inspect() string
- func (m *Map) Interface() interface{}
- func (m *Map) IsTruthy() bool
- func (m *Map) Iter() Iterator
- func (m *Map) Keys() *List
- func (m *Map) Len() *Int
- func (m *Map) ListItems() *List
- func (m *Map) Pop(key string, def Object) Object
- func (m *Map) Set(key string, value Object)
- func (m *Map) SetDefault(key string, value Object) Object
- func (m *Map) SetItem(key, value Object) *Error
- func (m *Map) Size() int
- func (m *Map) SortedKeys() []string
- func (m *Map) String() string
- func (m *Map) Type() Type
- func (m *Map) Update(other *Map)
- func (m *Map) Value() map[string]Object
- func (m *Map) Values() *List
- type MapIter
- func (iter *MapIter) Equals(other Object) Object
- func (iter *MapIter) GetAttr(name string) (Object, bool)
- func (iter *MapIter) Inspect() string
- func (iter *MapIter) Interface() interface{}
- func (iter *MapIter) IsTruthy() bool
- func (iter *MapIter) Next() (IteratorEntry, bool)
- func (iter *MapIter) Type() Type
- type MapStringIfaceConverter
- type Module
- func (m *Module) Compare(other Object) (int, error)
- func (m *Module) Equals(other Object) Object
- func (m *Module) GetAttr(name string) (Object, bool)
- func (m *Module) Inspect() string
- func (m *Module) Interface() interface{}
- func (m *Module) IsTruthy() bool
- func (m *Module) Name() *String
- func (m *Module) String() string
- func (m *Module) Type() Type
- type NilType
- func (n *NilType) Compare(other Object) (int, error)
- func (n *NilType) Equals(other Object) Object
- func (n *NilType) GetAttr(name string) (Object, bool)
- func (n *NilType) HashKey() HashKey
- func (n *NilType) Inspect() string
- func (n *NilType) Interface() interface{}
- func (n *NilType) IsTruthy() bool
- func (n *NilType) String() string
- func (n *NilType) Type() Type
- type Object
- type Proxy
- type Regexp
- func (r *Regexp) Compare(other Object) (int, error)
- func (r *Regexp) Equals(other Object) Object
- func (r *Regexp) GetAttr(name string) (Object, bool)
- func (r *Regexp) Inspect() string
- func (r *Regexp) Interface() interface{}
- func (r *Regexp) IsTruthy() bool
- func (r *Regexp) String() string
- func (r *Regexp) Type() Type
- func (r *Regexp) Value() *regexp.Regexp
- type Result
- func (rv *Result) Equals(other Object) Object
- func (rv *Result) ErrMsg() *String
- func (rv *Result) Expect(other Object) Object
- func (rv *Result) GetAttr(name string) (Object, bool)
- func (rv *Result) Inspect() string
- func (rv *Result) Interface() interface{}
- func (rv *Result) IsErr() bool
- func (rv *Result) IsOk() bool
- func (rv *Result) IsTruthy() bool
- func (rv *Result) String() string
- func (rv *Result) Type() Type
- func (rv *Result) Unwrap() Object
- func (rv *Result) UnwrapErr() *Error
- func (rv *Result) UnwrapOr(other Object) Object
- type Scope
- type Set
- func (s *Set) Add(items ...Object) Object
- func (s *Set) Contains(key Object) *Bool
- func (s *Set) DelItem(key Object) *Error
- func (s *Set) Difference(other *Set) *Set
- func (s *Set) Equals(other Object) Object
- func (s *Set) GetAttr(name string) (Object, bool)
- func (s *Set) GetItem(key Object) (Object, *Error)
- func (s *Set) GetSlice(slice Slice) (Object, *Error)
- func (s *Set) Inspect() string
- func (s *Set) Interface() interface{}
- func (s *Set) Intersection(other *Set) *Set
- func (s *Set) IsTruthy() bool
- func (s *Set) Iter() Iterator
- func (s *Set) Keys() []HashKey
- func (s *Set) Len() *Int
- func (s *Set) List() *List
- func (s *Set) Remove(items ...Object) Object
- func (s *Set) SetItem(key, value Object) *Error
- func (s *Set) Size() int
- func (s *Set) SortedItems() []Object
- func (s *Set) String() string
- func (s *Set) Type() Type
- func (s *Set) Union(other *Set) *Set
- func (s *Set) Value() map[HashKey]Object
- type SetIter
- func (iter *SetIter) Equals(other Object) Object
- func (iter *SetIter) GetAttr(name string) (Object, bool)
- func (iter *SetIter) Inspect() string
- func (iter *SetIter) Interface() interface{}
- func (iter *SetIter) IsTruthy() bool
- func (iter *SetIter) Next() (IteratorEntry, bool)
- func (iter *SetIter) Type() Type
- type Slice
- type String
- func (s *String) Compare(other Object) (int, error)
- func (s *String) Contains(key Object) *Bool
- func (s *String) DelItem(key Object) *Error
- func (s *String) Equals(other Object) Object
- func (s *String) GetAttr(name string) (Object, bool)
- func (s *String) GetItem(key Object) (Object, *Error)
- func (s *String) GetSlice(slice Slice) (Object, *Error)
- func (s *String) HashKey() HashKey
- func (s *String) Inspect() string
- func (s *String) Interface() interface{}
- func (s *String) IsTruthy() bool
- func (s *String) Iter() Iterator
- func (s *String) Len() *Int
- func (s *String) Reversed() *String
- func (s *String) SetItem(key, value Object) *Error
- func (s *String) String() string
- func (s *String) Type() Type
- func (s *String) Value() string
- type StringConverter
- type StringIter
- func (iter *StringIter) Equals(other Object) Object
- func (iter *StringIter) GetAttr(name string) (Object, bool)
- func (iter *StringIter) Inspect() string
- func (iter *StringIter) Interface() interface{}
- func (iter *StringIter) IsTruthy() bool
- func (iter *StringIter) Next() (IteratorEntry, bool)
- func (iter *StringIter) Type() Type
- type StructConverter
- type Time
- func (t *Time) After(ctx context.Context, args ...Object) Object
- func (t *Time) Before(ctx context.Context, args ...Object) Object
- func (t *Time) Compare(other Object) (int, error)
- func (t *Time) Equals(other Object) Object
- func (t *Time) Format(ctx context.Context, args ...Object) Object
- func (t *Time) GetAttr(name string) (Object, bool)
- func (t *Time) Inspect() string
- func (t *Time) Interface() interface{}
- func (t *Time) IsTruthy() bool
- func (t *Time) String() string
- func (t *Time) Type() Type
- func (t *Time) UTC(ctx context.Context, args ...Object) Object
- func (t *Time) Unix(ctx context.Context, args ...Object) Object
- func (t *Time) Value() time.Time
- type TimeConverter
- type Type
- type TypeConverter
- type TypeRegistryOpts
Constants ¶
const TenMB = 1024 * 1024 * 10
Variables ¶
Functions ¶
func CompareTypes ¶ added in v0.0.9
func ResolveIndex ¶ added in v0.0.13
ResolveIndex checks that the index is inbounds and transforms a negative index into the corresponding positive index. If the index is out of bounds, an error is returned.
func ResolveIntSlice ¶ added in v0.0.13
ResolveIntSlice checks that the slice start and stop indices are inbounds and transforms negative indices into the corresponding positive indices. If the slice is out of bounds, an error is returned.
Types ¶
type Bool ¶ added in v0.0.11
type Bool struct {
// contains filtered or unexported fields
}
Bool wraps bool and implements Object and Hashable interface.
type BooleanConverter ¶ added in v0.0.9
type BooleanConverter struct{}
BooleanConverter converts between bool and Bool.
func (*BooleanConverter) From ¶ added in v0.0.9
func (c *BooleanConverter) From(obj interface{}) (Object, error)
func (*BooleanConverter) To ¶ added in v0.0.9
func (c *BooleanConverter) To(obj Object) (interface{}, error)
func (*BooleanConverter) Type ¶ added in v0.0.9
func (c *BooleanConverter) Type() reflect.Type
type Builtin ¶
type Builtin struct {
// contains filtered or unexported fields
}
Builtin wraps func and implements Object interface.
func NewBuiltin ¶ added in v0.0.13
func NewBuiltin(name string, fn BuiltinFunction, module ...*Module) *Builtin
func NewErrorHandler ¶ added in v0.0.13
func NewErrorHandler(name string, fn BuiltinFunction, module ...*Module) *Builtin
func NewNoopBuiltin ¶ added in v0.0.6
NewNoopBuiltin creates a builtin function that has no effect.
func (*Builtin) IsErrorHandler ¶ added in v0.0.13
func (*Builtin) Key ¶ added in v0.0.6
Returns a string that uniquely identifies this builtin function.
func (*Builtin) Value ¶ added in v0.0.13
func (b *Builtin) Value() BuiltinFunction
type BuiltinFunction ¶
BuiltinFunction holds the type of a built-in function.
type CallFunc ¶ added in v0.0.12
CallFunc defines a type signature for a function that can call a Tamarin function. In part, this type definition is useful to avoid a circular dependency with the evaluator package.
type Comparable ¶ added in v0.0.9
Comparable is an interface used to compare two objects.
-1 if this < other 0 if this == other 1 if this > other
type Container ¶ added in v0.0.13
type Container interface {
// GetItem implements the [key] operator for a container type.
GetItem(key Object) (Object, *Error)
// GetSlice implements the [start:stop] operator for a container type.
GetSlice(s Slice) (Object, *Error)
// SetItem implements the [key] = value operator for a container type.
SetItem(key, value Object) *Error
// DelItem implements the del [key] operator for a container type.
DelItem(key Object) *Error
// Contains returns true if the given item is found in this container.
Contains(item Object) *Bool
// Len returns the number of items in this container.
Len() *Int
// Iter returns an iterator for this container.
Iter() Iterator
}
type ContextConverter ¶ added in v0.0.12
type ContextConverter struct{}
ContextConverter converts between context.Context and Context.
func (*ContextConverter) From ¶ added in v0.0.12
func (c *ContextConverter) From(obj interface{}) (Object, error)
func (*ContextConverter) To ¶ added in v0.0.12
func (c *ContextConverter) To(obj Object) (interface{}, error)
func (*ContextConverter) Type ¶ added in v0.0.12
func (c *ContextConverter) Type() reflect.Type
type Control ¶ added in v0.0.13
type Control struct {
// contains filtered or unexported fields
}
Control is used internally during evaluation of "break", "continue", and "return" statements.
func NewContinue ¶ added in v0.0.13
func NewContinue() *Control
type DefaultTypeRegistry ¶ added in v0.0.12
type DefaultTypeRegistry struct {
// contains filtered or unexported fields
}
DefaultTypeRegistry implements the GoTypeRegistry interface.
func NewTypeRegistry ¶ added in v0.0.12
func NewTypeRegistry(opts ...TypeRegistryOpts) (*DefaultTypeRegistry, error)
NewTypeRegistry creates a GoTypeRegistry that can be used to proxy method calls to various struct types. The provided type conversion functions are used to translate between Go and Tamarin types.
func (*DefaultTypeRegistry) GetAttr ¶ added in v0.0.12
func (p *DefaultTypeRegistry) GetAttr(obj interface{}, name string) (GoAttr, bool)
func (*DefaultTypeRegistry) GetType ¶ added in v0.0.12
func (p *DefaultTypeRegistry) GetType(obj interface{}) (*GoType, bool)
func (*DefaultTypeRegistry) Register ¶ added in v0.0.12
func (p *DefaultTypeRegistry) Register(obj interface{}) (*GoType, error)
type Error ¶
type Error struct {
// contains filtered or unexported fields
}
Error wraps a Go error interface and implements Object.
func NewArgsError ¶ added in v0.0.12
func NewArgsRangeError ¶ added in v0.0.12
type ErrorConverter ¶ added in v0.0.9
type ErrorConverter struct{}
ErrorConverter converts between error and Error.
func (*ErrorConverter) From ¶ added in v0.0.9
func (c *ErrorConverter) From(obj interface{}) (Object, error)
func (*ErrorConverter) To ¶ added in v0.0.9
func (c *ErrorConverter) To(obj Object) (interface{}, error)
func (*ErrorConverter) Type ¶ added in v0.0.9
func (c *ErrorConverter) Type() reflect.Type
type Float ¶
type Float struct {
// contains filtered or unexported fields
}
Float wraps float64 and implements Object and Hashable interfaces.
type Float32Converter ¶ added in v0.0.9
type Float32Converter struct{}
Float32Converter converts between float32 and Float.
func (*Float32Converter) From ¶ added in v0.0.9
func (c *Float32Converter) From(obj interface{}) (Object, error)
func (*Float32Converter) To ¶ added in v0.0.9
func (c *Float32Converter) To(obj Object) (interface{}, error)
func (*Float32Converter) Type ¶ added in v0.0.9
func (c *Float32Converter) Type() reflect.Type
type Float64Converter ¶ added in v0.0.9
type Float64Converter struct{}
Float64Converter converts between float64 and Float.
func (*Float64Converter) From ¶ added in v0.0.9
func (c *Float64Converter) From(obj interface{}) (Object, error)
func (*Float64Converter) To ¶ added in v0.0.9
func (c *Float64Converter) To(obj Object) (interface{}, error)
func (*Float64Converter) Type ¶ added in v0.0.9
func (c *Float64Converter) Type() reflect.Type
type Function ¶
type Function struct {
// contains filtered or unexported fields
}
Function contains the AST for user defined function and implements Object interface.
func NewFunction ¶ added in v0.0.13
func (*Function) Parameters ¶
type GoAttr ¶ added in v0.0.12
type GoAttr interface {
// Name of the attribute.
Name() string
// Type indicates whether the attribute is a method or a field.
AttrType() GoAttrType
}
GoAttr is an interface to represent an attribute on a Go type. This could be either a field or a method.
type GoAttrType ¶ added in v0.0.12
type GoAttrType string
GoAttrType is used to indicate whether a GoAttr is a field or a method.
const ( // GoAttrTypeMethod indicates that the GoAttr is a method. GoAttrTypeMethod GoAttrType = "method" // GoAttrTypeField indicates that the GoAttr is a field. GoAttrTypeField GoAttrType = "field" )
type GoField ¶ added in v0.0.12
type GoField struct {
// contains filtered or unexported fields
}
GoField represents a single field on a Go type that can be read or written.
func (*GoField) AttrType ¶ added in v0.0.12
func (f *GoField) AttrType() GoAttrType
func (*GoField) Converter ¶ added in v0.0.12
func (f *GoField) Converter() TypeConverter
type GoMethod ¶ added in v0.0.12
type GoMethod struct {
// contains filtered or unexported fields
}
GoMethod represents a single method on a Go type that can be proxied.
func (*GoMethod) AttrType ¶ added in v0.0.12
func (m *GoMethod) AttrType() GoAttrType
type GoType ¶ added in v0.0.12
type GoType struct {
// contains filtered or unexported fields
}
GoType represents a single Go type whose methods and fields can be proxied.
func (*GoType) AttrByName ¶ added in v0.0.12
func (*GoType) FieldByName ¶ added in v0.0.12
func (*GoType) MethodByName ¶ added in v0.0.12
func (*GoType) StructType ¶ added in v0.0.12
type GoTypeRegistry ¶ added in v0.0.12
type GoTypeRegistry interface {
// Register determines type and method information for the provided
// object and saves that information for use in later method call proxying.
Register(obj interface{}) (*GoType, error)
// GetType returns the GoType for the given object and a boolean that
// indicates whether the type was found. Only types that were previously
// registered will be found.
GetType(obj interface{}) (*GoType, bool)
// GetAttr returns the GoAttr for the given object and name.
GetAttr(obj interface{}, name string) (GoAttr, bool)
}
GoTypeRegistry is an interface that defines a way to register Go types and call methods on instances of those types.
type HashKey ¶
type HashKey struct {
// Type of the object being referenced.
Type Type
// FltValue is used as the key for floats.
FltValue float64
// IntValue is used as the key for integers.
IntValue int64
// StrValue is used as the key for strings.
StrValue string
}
HashKey is used to identify unique values in a set.
type Hashable ¶
type Hashable interface {
// Hash returns a hash key for the given object.
HashKey() HashKey
}
Hashable types can be hashed and consequently used in a set.
type HttpResponse ¶
type HttpResponse struct {
// contains filtered or unexported fields
}
func NewHttpResponse ¶ added in v0.0.13
func NewHttpResponse(resp *http.Response) *HttpResponse
func (*HttpResponse) ContentLength ¶ added in v0.0.13
func (r *HttpResponse) ContentLength() *Int
func (*HttpResponse) Equals ¶ added in v0.0.12
func (r *HttpResponse) Equals(other Object) Object
func (*HttpResponse) GetAttr ¶ added in v0.0.12
func (r *HttpResponse) GetAttr(name string) (Object, bool)
func (*HttpResponse) Header ¶ added in v0.0.13
func (r *HttpResponse) Header() *Map
func (*HttpResponse) Inspect ¶
func (r *HttpResponse) Inspect() string
func (*HttpResponse) Interface ¶ added in v0.0.13
func (r *HttpResponse) Interface() interface{}
func (*HttpResponse) IsTruthy ¶ added in v0.0.13
func (r *HttpResponse) IsTruthy() bool
func (*HttpResponse) JSON ¶
func (r *HttpResponse) JSON() *Result
func (*HttpResponse) Proto ¶ added in v0.0.13
func (r *HttpResponse) Proto() *String
func (*HttpResponse) Status ¶ added in v0.0.13
func (r *HttpResponse) Status() *String
func (*HttpResponse) StatusCode ¶ added in v0.0.13
func (r *HttpResponse) StatusCode() *Int
func (*HttpResponse) Text ¶
func (r *HttpResponse) Text() *Result
func (*HttpResponse) Type ¶
func (r *HttpResponse) Type() Type
type Int ¶ added in v0.0.11
type Int struct {
// contains filtered or unexported fields
}
Int wraps int64 and implements Object and Hashable interfaces.
type Int64Converter ¶ added in v0.0.9
type Int64Converter struct{}
Int64Converter converts between int64 and Integer.
func (*Int64Converter) From ¶ added in v0.0.9
func (c *Int64Converter) From(obj interface{}) (Object, error)
func (*Int64Converter) To ¶ added in v0.0.9
func (c *Int64Converter) To(obj Object) (interface{}, error)
func (*Int64Converter) Type ¶ added in v0.0.9
func (c *Int64Converter) Type() reflect.Type
type IntConverter ¶ added in v0.0.9
type IntConverter struct{}
IntConverter converts between int and Integer.
func (*IntConverter) From ¶ added in v0.0.9
func (c *IntConverter) From(obj interface{}) (Object, error)
func (*IntConverter) To ¶ added in v0.0.9
func (c *IntConverter) To(obj Object) (interface{}, error)
func (*IntConverter) Type ¶ added in v0.0.9
func (c *IntConverter) Type() reflect.Type
type Iterator ¶ added in v0.0.13
type Iterator interface {
Object
// Next returns the next item in the iterator and a bool indicating whether
// the returned item is valid. If the iteration is complete, (nil, false) is
// returned.
Next() (IteratorEntry, bool)
}
Iterator is an interface used to iterate over a container.
type IteratorEntry ¶ added in v0.0.13
IteratorEntry is a single item returned by an iterator.
type List ¶ added in v0.0.10
type List struct {
// contains filtered or unexported fields
}
List of objects
func NewStringList ¶ added in v0.0.10
func (*List) Clear ¶ added in v0.0.12
func (ls *List) Clear()
Clear removes all the items from the list.
func (*List) Contains ¶ added in v0.0.13
Contains returns true if the given item is found in this container.
func (*List) DelItem ¶ added in v0.0.13
DelItem implements the del [key] operator for a container type.
func (*List) Extend ¶ added in v0.0.12
Extend adds the items of a list to the end of the current list.
func (*List) GetSlice ¶ added in v0.0.13
GetSlice implements the [start:stop] operator for a container type.
func (*List) Index ¶ added in v0.0.12
Index returns the index of the first item with the specified value.
func (*List) Reverse ¶ added in v0.0.12
func (ls *List) Reverse()
Reverse reverses the order of the list.
type ListIter ¶ added in v0.0.13
type ListIter struct {
// contains filtered or unexported fields
}
func NewListIter ¶ added in v0.0.13
func (*ListIter) Next ¶ added in v0.0.13
func (iter *ListIter) Next() (IteratorEntry, bool)
type Map ¶ added in v0.0.11
type Map struct {
// contains filtered or unexported fields
}
func NewMapFromGo ¶ added in v0.0.13
func (*Map) Contains ¶ added in v0.0.12
Contains returns true if the given item is found in this container.
func (*Map) GetSlice ¶ added in v0.0.13
GetSlice implements the [start:stop] operator for a container type.
func (*Map) GetWithDefault ¶ added in v0.0.13
func (*Map) GetWithObject ¶ added in v0.0.11
func (*Map) SortedKeys ¶ added in v0.0.12
type MapIter ¶ added in v0.0.13
type MapIter struct {
// contains filtered or unexported fields
}
func NewMapIter ¶ added in v0.0.13
func (*MapIter) Next ¶ added in v0.0.13
func (iter *MapIter) Next() (IteratorEntry, bool)
type MapStringIfaceConverter ¶ added in v0.0.9
type MapStringIfaceConverter struct{}
MapStringIfaceConverter converts between map[string]interface{} and Hash.
func (*MapStringIfaceConverter) From ¶ added in v0.0.9
func (c *MapStringIfaceConverter) From(obj interface{}) (Object, error)
func (*MapStringIfaceConverter) To ¶ added in v0.0.9
func (c *MapStringIfaceConverter) To(obj Object) (interface{}, error)
func (*MapStringIfaceConverter) Type ¶ added in v0.0.9
func (c *MapStringIfaceConverter) Type() reflect.Type
type Object ¶
type Object interface {
// Type of the object.
Type() Type
// Inspect returns a string representation of the given object.
Inspect() string
// Interface converts the given object to a native Go value.
Interface() interface{}
// Returns True if the given object is equal to this object.
Equals(other Object) Object
// GetAttr returns the attribute with the given name from this object.
GetAttr(name string) (Object, bool)
// IsTruthy returns true if the object is considered "truthy".
IsTruthy() bool
}
Object is the interface that all object types in Tamarin must implement.
func FromGoType ¶
func FromGoType(obj interface{}) Object
type Proxy ¶ added in v0.0.9
type Proxy struct {
// contains filtered or unexported fields
}
Proxy is a Tamarin type that proxies method calls to a wrapped Go struct. Only the public methods of the Go type are proxied.
func NewProxy ¶ added in v0.0.9
func NewProxy(reg GoTypeRegistry, obj interface{}) (*Proxy, error)
NewProxy returns a new Tamarin proxy object that wraps the given Go object. The Go type is registered with the type registry, which has no effect if the type is already registered. This operation may fail if the Go type has attributes whose types cannot be converted to Tamarin types.
type Regexp ¶
type Regexp struct {
// contains filtered or unexported fields
}
Regexp wraps regexp.Regexp and implements the Object interface.
type Result ¶
type Result struct {
// contains filtered or unexported fields
}
Result contains one of: an "ok" value or an "err" value
func NewErrResult ¶ added in v0.0.13
func NewOkResult ¶ added in v0.0.4
type Scope ¶ added in v0.0.12
type Scope interface {
// Name of the scope, to aid debugging
Name() string
// IsReadOnly returns true iff the scope contains a variable with the
// given name and that variable is marked as read-only.
IsReadOnly(name string) bool
// Get returns the object associated with the given name, and a boolean
// indicating whether the object was found.
Get(name string) (Object, bool)
// Declare adds a new variable to the scope. If the variable already
// exists, an error is returned.
Declare(name string, obj Object, readOnly bool) error
// Update the variable with the given name. If the variable does not
// exist, an error is returned.
Update(name string, obj Object) error
// Contents returns a map of all variables in the scope.
Contents() map[string]Object
}
Scope is an interface that can be used to implement variable storage for a specific context.
type Set ¶
type Set struct {
// contains filtered or unexported fields
}
func NewSetWithSize ¶ added in v0.0.9
func (*Set) Contains ¶ added in v0.0.9
Contains returns true if the given item is found in this container.
func (*Set) Difference ¶ added in v0.0.9
Difference returns a new set that is the difference of the two sets.
func (*Set) GetSlice ¶ added in v0.0.13
GetSlice implements the [start:stop] operator for a container type.
func (*Set) Intersection ¶ added in v0.0.9
Intersection returns a new set that is the intersection of the two sets.
func (*Set) SortedItems ¶ added in v0.0.12
type SetIter ¶ added in v0.0.13
type SetIter struct {
// contains filtered or unexported fields
}
func NewSetIter ¶ added in v0.0.13
func (*SetIter) Next ¶ added in v0.0.13
func (iter *SetIter) Next() (IteratorEntry, bool)
type StringConverter ¶ added in v0.0.9
type StringConverter struct{}
StringConverter converts between string and String.
func (*StringConverter) From ¶ added in v0.0.9
func (c *StringConverter) From(obj interface{}) (Object, error)
func (*StringConverter) To ¶ added in v0.0.9
func (c *StringConverter) To(obj Object) (interface{}, error)
func (*StringConverter) Type ¶ added in v0.0.9
func (c *StringConverter) Type() reflect.Type
type StringIter ¶ added in v0.0.13
type StringIter struct {
// contains filtered or unexported fields
}
func NewStringIter ¶ added in v0.0.13
func NewStringIter(s *String) *StringIter
func (*StringIter) Equals ¶ added in v0.0.13
func (iter *StringIter) Equals(other Object) Object
func (*StringIter) GetAttr ¶ added in v0.0.13
func (iter *StringIter) GetAttr(name string) (Object, bool)
func (*StringIter) Inspect ¶ added in v0.0.13
func (iter *StringIter) Inspect() string
func (*StringIter) Interface ¶ added in v0.0.13
func (iter *StringIter) Interface() interface{}
func (*StringIter) IsTruthy ¶ added in v0.0.13
func (iter *StringIter) IsTruthy() bool
func (*StringIter) Next ¶ added in v0.0.13
func (iter *StringIter) Next() (IteratorEntry, bool)
func (*StringIter) Type ¶ added in v0.0.13
func (iter *StringIter) Type() Type
type StructConverter ¶ added in v0.0.9
type StructConverter struct {
Prototype interface{}
AsPointer bool
}
StructConverter converts between a struct and a Hash via JSON marshaling.
func (*StructConverter) From ¶ added in v0.0.9
func (c *StructConverter) From(obj interface{}) (Object, error)
func (*StructConverter) To ¶ added in v0.0.9
func (c *StructConverter) To(obj Object) (interface{}, error)
func (*StructConverter) Type ¶ added in v0.0.9
func (c *StructConverter) Type() reflect.Type
type Time ¶ added in v0.0.4
type Time struct {
// contains filtered or unexported fields
}
type TimeConverter ¶ added in v0.0.9
type TimeConverter struct{}
TimeConverter converts between time.Time and Time.
func (*TimeConverter) From ¶ added in v0.0.9
func (c *TimeConverter) From(obj interface{}) (Object, error)
func (*TimeConverter) To ¶ added in v0.0.9
func (c *TimeConverter) To(obj Object) (interface{}, error)
func (*TimeConverter) Type ¶ added in v0.0.9
func (c *TimeConverter) Type() reflect.Type
type Type ¶
type Type string
Type defines the type of an object.
const ( INT Type = "int" FLOAT Type = "float" BOOL Type = "bool" NIL Type = "nil" ERROR Type = "error" FUNCTION Type = "function" STRING Type = "string" BUILTIN Type = "builtin" LIST Type = "list" MAP Type = "map" FILE Type = "file" REGEXP Type = "regexp" SET Type = "set" MODULE Type = "module" RESULT Type = "result" HTTP_RESPONSE Type = "http_response" DB_CONNECTION Type = "db_connection" TIME Type = "time" PROXY Type = "proxy" CONTROL Type = "control" STRING_ITER Type = "string_iter" LIST_ITER Type = "list_iter" MAP_ITER Type = "map_iter" SET_ITER Type = "set_iter" ITER_ENTRY Type = "iter_entry" )
Type constants
type TypeConverter ¶ added in v0.0.9
type TypeConverter interface {
// To converts a Tamarin object to a Go object.
To(Object) (interface{}, error)
// From converts a Go object to a Tamarin object.
From(interface{}) (Object, error)
// Type that this TypeConverter is responsible for.
Type() reflect.Type
}
TypeConverter is an interface used to convert between Go and Tamarin objects for a single Go type. There may be a way to use generics here...
type TypeRegistryOpts ¶ added in v0.0.12
type TypeRegistryOpts struct {
// Converters is a list of TypeConverters that will be used to convert
// input and output types for method calls.
Converters []TypeConverter
// NoDefaults indicates that the default TypeConverters should not be
// automatically used by the registry. If this is set, the caller should
// provide their own TypeConverters.
NoDefaults bool
}
TypeRegistryOpts contains options used to create a GoTypeRegistry.