Documentation
¶
Index ¶
- Variables
- func CaseInsensitive(data sort.Interface) sort.Interface
- func MacroNodeToFunc(node *nodes.Macro, r *Renderer) (func(params *VarArgs) *Value, error)
- func Self(r *Renderer) map[string]func() string
- func TransformToMapping(va *VarArgs, argNames []string, defaultKwargs []*KwArg, activateVarargs bool, ...) (map[string]*Value, error)
- type Context
- func (ctx *Context) Get(name string) interface{}
- func (ctx *Context) Has(name string) bool
- func (ctx *Context) Inherit() *Context
- func (ctx *Context) Merge(other *Context) *Context
- func (ctx *Context) Set(name string, value interface{})
- func (ctx *Context) Update(other map[string]interface{}) *Context
- type Dict
- type EvalConfig
- type Evaluator
- func (e *Evaluator) Eval(node nodes.Expression) *Value
- func (e *Evaluator) EvalTest(expr *nodes.TestExpression) *Value
- func (e *Evaluator) EvaluateFiltered(expr *nodes.FilteredExpression) *Value
- func (e *Evaluator) ExecuteFilter(fc *nodes.FilterCall, v *Value) *Value
- func (e *Evaluator) ExecuteFilterByName(name string, in *Value, params *VarArgs) *Value
- func (e *Evaluator) ExecuteTest(tc *nodes.TestCall, v *Value) *Value
- func (e *Evaluator) ExecuteTestByName(name string, in *Value, params *VarArgs) *Value
- type FilterFunction
- type FilterSet
- type KwArg
- type Macro
- type MacroSet
- type Pair
- type ReducedVarArgs
- type Renderer
- func (r *Renderer) EndTag(trim *nodes.Trim)
- func (r *Renderer) Eval(node nodes.Expression) *Value
- func (r *Renderer) Evaluator() *Evaluator
- func (r *Renderer) Execute() error
- func (r *Renderer) ExecuteWrapper(wrapper *nodes.Wrapper) error
- func (r *Renderer) ExecuteWrapperWithoutNewScope(wrapper *nodes.Wrapper) error
- func (r *Renderer) Flush(lstrip bool)
- func (r *Renderer) FlushAndTrim(trim, lstrip bool)
- func (r *Renderer) Inherit() *Renderer
- func (r *Renderer) InheritWithoutNewScope() *Renderer
- func (r *Renderer) LStrip()
- func (r *Renderer) RenderValue(value *Value)
- func (r *Renderer) StartTag(trim *nodes.Trim, lstrip bool)
- func (r *Renderer) String() string
- func (r *Renderer) Tag(trim *nodes.Trim, lstrip bool)
- func (r *Renderer) Visit(node nodes.Node) (nodes.Visitor, error)
- func (r *Renderer) WriteString(txt string) (int, error)
- type Statement
- type StatementSet
- type Template
- type TemplateLoader
- type TestFunction
- type TestSet
- type TrimState
- type Value
- func (v *Value) Bool() bool
- func (v *Value) Callable() reflect.Value
- func (v *Value) CanSlice() bool
- func (v *Value) Contains(other *Value) bool
- func (v *Value) EqualValueTo(other *Value) bool
- func (v *Value) Error() string
- func (v *Value) Escaped() string
- func (v *Value) Float() float64
- func (v *Value) Get(key string) (*Value, bool)
- func (v *Value) Getattr(name string) (*Value, bool)
- func (v *Value) Getitem(key interface{}) (*Value, bool)
- func (v *Value) Index(i int) *Value
- func (v *Value) Integer() int
- func (v *Value) Interface() interface{}
- func (v *Value) IsBool() bool
- func (v *Value) IsCallable() bool
- func (v *Value) IsDict() bool
- func (v *Value) IsError() bool
- func (v *Value) IsFloat() bool
- func (v *Value) IsInteger() bool
- func (v *Value) IsIterable() bool
- func (v *Value) IsList() bool
- func (v *Value) IsNil() bool
- func (v *Value) IsNumber() bool
- func (v *Value) IsString() bool
- func (v *Value) IsTrue() bool
- func (v *Value) Items() []*Pair
- func (v *Value) Iterate(fn func(idx, count int, key, value *Value) bool, empty func())
- func (v *Value) IterateOrder(fn func(idx, count int, key, value *Value) bool, empty func(), reverse bool, ...)
- func (v *Value) Keys() ValuesList
- func (v *Value) Len() int
- func (v *Value) Negate() *Value
- func (v *Value) Set(key string, value interface{}) error
- func (v *Value) Slice(i, j int) *Value
- func (v *Value) String() string
- type ValuesList
- type VarArgs
- func (va *VarArgs) Expect(args int, kwargs []*KwArg) *ReducedVarArgs
- func (va *VarArgs) ExpectArgs(args int) *ReducedVarArgs
- func (va *VarArgs) ExpectKwArgs(kwargs []*KwArg) *ReducedVarArgs
- func (va *VarArgs) ExpectNothing() *ReducedVarArgs
- func (va *VarArgs) First() *Value
- func (va *VarArgs) GetKwarg(key string, fallback interface{}) *Value
Constants ¶
This section is empty.
Variables ¶
var TypeDict = reflect.TypeOf(Dict{})
Functions ¶
func CaseInsensitive ¶
CaseInsensitive returns the the data sorted in a case insensitive way (if string).
func MacroNodeToFunc ¶
func TransformToMapping ¶
func TransformToMapping( va *VarArgs, argNames []string, defaultKwargs []*KwArg, activateVarargs bool, activateKwargs bool, ) (map[string]*Value, error)
TransformToMapping transforms and validates VarArgs against an expected signature. It returns the mapping of argument name -> value and does some basic sanity checks based on the given signature.
Types ¶
type Context ¶
type Context struct {
// contains filtered or unexported fields
}
func EmptyContext ¶
func EmptyContext() *Context
func NewContext ¶
type Dict ¶
type Dict struct {
Pairs []*Pair
}
func (*Dict) Items ¶
func (d *Dict) Items() *ValuesList
func (*Dict) Keys ¶
func (d *Dict) Keys() ValuesList
type EvalConfig ¶
type EvalConfig struct { *config.Config Filters *FilterSet Globals *Context Statements *StatementSet Tests *TestSet Loader TemplateLoader }
func NewEvalConfig ¶
func NewEvalConfig(cfg *config.Config) *EvalConfig
func (*EvalConfig) GetTemplate ¶
func (cfg *EvalConfig) GetTemplate(filename string) (*nodes.Template, error)
func (*EvalConfig) Inherit ¶
func (cfg *EvalConfig) Inherit() *EvalConfig
type Evaluator ¶
type Evaluator struct { *EvalConfig Ctx *Context }
func (*Evaluator) EvaluateFiltered ¶
func (e *Evaluator) EvaluateFiltered(expr *nodes.FilteredExpression) *Value
EvaluateFiltered evaluate a filtered expression
func (*Evaluator) ExecuteFilter ¶
func (e *Evaluator) ExecuteFilter(fc *nodes.FilterCall, v *Value) *Value
ExecuteFilter execute a filter node
func (*Evaluator) ExecuteFilterByName ¶
ExecuteFilterByName execute a filter given its name
func (*Evaluator) ExecuteTest ¶
type FilterFunction ¶
FilterFunction is the type filter functions must fulfil
type FilterSet ¶
type FilterSet map[string]FilterFunction
func (*FilterSet) Register ¶
func (fs *FilterSet) Register(name string, fn FilterFunction) error
Register registers a new filter. If there's already a filter with the same name, Register will panic. You usually want to call this function in the filter's init() function: http://golang.org/doc/effective_go.html#init
See http://www.florian-schlachter.de/post/gonja/ for more about writing filters and tags.
type MacroSet ¶
func (*MacroSet) Register ¶
Register registers a new filter. If there's already a filter with the same name, Register will panic. You usually want to call this function in the filter's init() function: http://golang.org/doc/effective_go.html#init
See http://www.florian-schlachter.de/post/gonja/ for more about writing filters and tags.
type ReducedVarArgs ¶
type ReducedVarArgs struct { *VarArgs // contains filtered or unexported fields }
ReducedVarArgs represents pythonic variadic args/kwargs but values are reduced (ie. kwargs given as args are accessible by name)
func (*ReducedVarArgs) Error ¶
func (rva *ReducedVarArgs) Error() string
func (*ReducedVarArgs) IsError ¶
func (rva *ReducedVarArgs) IsError() bool
IsError returns true if there was an error on Expect call
type Renderer ¶
type Renderer struct { *EvalConfig Ctx *Context Template *Template Root *nodes.Template Out *strings.Builder Trim *TrimState }
Renderer is a node visitor in charge of rendering
func NewRenderer ¶
NewRenderer initialize a new renderer
func (*Renderer) ExecuteWrapper ¶
ExecuteWrapper wraps the nodes.Wrapper execution logic
func (*Renderer) ExecuteWrapperWithoutNewScope ¶
func (*Renderer) FlushAndTrim ¶
func (*Renderer) InheritWithoutNewScope ¶
func (*Renderer) RenderValue ¶
RenderValue properly render a value
type StatementSet ¶
type StatementSet map[string]parser.StatementParser
func (StatementSet) Exists ¶
func (ss StatementSet) Exists(name string) bool
Exists returns true if the given test is already registered
func (*StatementSet) Register ¶
func (ss *StatementSet) Register(name string, parser parser.StatementParser) error
Registers a new tag. You usually want to call this function in the tag's init() function: http://golang.org/doc/effective_go.html#init
See http://www.florian-schlachter.de/post/gonja/ for more about writing filters and tags.
func (*StatementSet) Replace ¶
func (ss *StatementSet) Replace(name string, parser parser.StatementParser) error
Replaces an already registered tag with a new implementation. Use this function with caution since it allows you to change existing tag behaviour.
func (*StatementSet) Update ¶
func (ss *StatementSet) Update(other StatementSet) StatementSet
type Template ¶
type Template struct { Name string Reader io.Reader Source string Env *EvalConfig Loader TemplateLoader Tokens *tokens.Stream Parser *parser.Parser Root *nodes.Template Macros MacroSet }
func NewTemplate ¶
func NewTemplate(name string, source string, cfg *EvalConfig) (*Template, error)
type TemplateLoader ¶
type TestFunction ¶
TestFunction is the type test functions must fulfil
type TestSet ¶
type TestSet map[string]TestFunction
TestSet maps test names to their TestFunction handler
func (*TestSet) Register ¶
func (ts *TestSet) Register(name string, fn TestFunction) error
Register registers a new test. If there's already a test with the same name, RegisterTest will panic. You usually want to call this function in the test's init() function: http://golang.org/doc/effective_go.html#init
See http://www.florian-schlachter.de/post/gonja/ for more about writing tests and tags.
type Value ¶
type Value struct { Val reflect.Value Safe bool // used to indicate whether a Value needs explicit escaping in the template }
func AsSafeValue ¶
func AsSafeValue(i interface{}) *Value
AsSafeValue works like AsValue, but does not apply the 'escape' filter.
func AsValue ¶
func AsValue(i interface{}) *Value
AsValue converts any given Value to a gonja.Value Usually being used within oSn functions passed to a template through a Context or within filter functions.
Example:
AsValue("my string")
func ValueError ¶
func (*Value) Bool ¶
Bool returns the underlying value as bool. If the value is not bool, false will always be returned. If you're looking for true/false-evaluation of the underlying value, have a look on the IsTrue()-function.
func (*Value) CanSlice ¶
CanSlice checks whether the underlying value is of type array, slice or string. You normally would use CanSlice() before using the Slice() operation.
func (*Value) Contains ¶
Contains checks whether the underlying value (which must be of type struct, map, string, array or slice) contains of another Value (e. g. used to check whether a struct contains of a specific field or a map contains a specific key).
Example:
AsValue("Hello, World!").Contains(AsValue("World")) == true
func (*Value) EqualValueTo ¶
EqualValueTo checks whether two values are containing the same value or object.
func (*Value) Float ¶
Float returns the underlying value as a float (converts the underlying value, if necessary). If it's not possible to convert the underlying value, it will return 0.0.
func (*Value) Index ¶
Index gets the i-th item of an array, slice or string. Otherwise it will return NIL.
func (*Value) Integer ¶
Integer returns the underlying value as an integer (converts the underlying value, if necessary). If it's not possible to convert the underlying value, it will return 0.
func (*Value) Interface ¶
func (v *Value) Interface() interface{}
Interface gives you access to the underlying value. The problem we work around here is that Interface() panics for integers in some situations.
func (*Value) IsCallable ¶
func (*Value) IsError ¶
IsError detects if an object is an error. It does it by detecting if it fulfills the error interface. However Value is also implementing that interface, so we have to be careful to mistake a general Value for an error.
func (*Value) IsIterable ¶
func (*Value) IsNumber ¶
IsNumber checks whether the underlying value is either an integer or a float.
func (*Value) IsTrue ¶
IsTrue tries to evaluate the underlying value the Pythonic-way:
Returns TRUE in one the following cases:
- int != 0
- uint != 0
- float != 0.0
- len(array/chan/map/slice/string) > 0
- bool == true
- underlying value is a struct
Otherwise returns always FALSE.
func (*Value) Iterate ¶
Iterate iterates over a map, array, slice or a string. It calls the function's first argument for every value with the following arguments:
idx current 0-index count total amount of items key *Value for the key or item value *Value (only for maps, the respective value for a specific key)
If the underlying value has no items or is not one of the types above, the empty function (function's second argument) will be called.
func (*Value) IterateOrder ¶
func (v *Value) IterateOrder(fn func(idx, count int, key, value *Value) bool, empty func(), reverse bool, sorted bool, caseSensitive bool)
IterateOrder behaves like Value.Iterate, but can iterate through an array/slice/string in reverse. Does not affect the iteration through a map because maps don't have any particular order. However, you can force an order using the `sorted` keyword (and even use `reversed sorted`).
func (*Value) Keys ¶
func (v *Value) Keys() ValuesList
func (*Value) Len ¶
Len returns the length for an array, chan, map, slice or string. Otherwise it will return 0.
func (*Value) Negate ¶
Negate tries to negate the underlying value. It's mainly used for the NOT-operator and in conjunction with a call to return_value.IsTrue() afterwards.
Example:
AsValue(1).Negate().IsTrue() == false
func (*Value) Slice ¶
Slice slices an array, slice or string. Otherwise it will return an empty []int.
func (*Value) String ¶
String returns a string for the underlying value. If this value is not of type string, gonja tries to convert it. Currently the following types for underlying values are supported:
- string
- int/uint (any size)
- float (any precision)
- bool
- time.Time
- String() will be called on the underlying value if provided
NIL values will lead to an empty string. Unsupported types are leading to their respective type name.
type ValuesList ¶
type ValuesList []*Value
func (*ValuesList) Append ¶
func (vl *ValuesList) Append(element *Value) *ValuesList
func (ValuesList) Contains ¶
func (vl ValuesList) Contains(value *Value) bool
func (ValuesList) Len ¶
func (vl ValuesList) Len() int
func (ValuesList) Less ¶
func (vl ValuesList) Less(i, j int) bool
func (ValuesList) String ¶
func (vl ValuesList) String() string
func (ValuesList) Swap ¶
func (vl ValuesList) Swap(i, j int)
type VarArgs ¶
VarArgs represents pythonic variadic args/kwargs
func NewVarArgs ¶
func NewVarArgs() *VarArgs
func (*VarArgs) Expect ¶
func (va *VarArgs) Expect(args int, kwargs []*KwArg) *ReducedVarArgs
Expect validates VarArgs against an expected signature
func (*VarArgs) ExpectArgs ¶
func (va *VarArgs) ExpectArgs(args int) *ReducedVarArgs
ExpectArgs ensures VarArgs receive only arguments
func (*VarArgs) ExpectKwArgs ¶
func (va *VarArgs) ExpectKwArgs(kwargs []*KwArg) *ReducedVarArgs
ExpectKwArgs allow to specify optionnaly expected KwArgs
func (*VarArgs) ExpectNothing ¶
func (va *VarArgs) ExpectNothing() *ReducedVarArgs
ExpectNothing ensures VarArgs does not receive any argument