template

package
v0.39.0 Latest Latest
Warning

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

Go to latest
Published: Feb 2, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	NodeTagRoot = NodeTag{-100}
)

Functions

func NewCompiledTemplateMultiError

func NewCompiledTemplateMultiError(err error, loader CompiledTemplateLoader) error

Types

type Ancestors

type Ancestors struct {
	// contains filtered or unexported fields
}

func NewAncestors

func NewAncestors(nodeNumToParentNum map[NodeTag]NodeTag) Ancestors

func (Ancestors) FindCommonParentTag

func (e Ancestors) FindCommonParentTag(currTag, newTag NodeTag) NodeTag

func (Ancestors) FindParentTag

func (e Ancestors) FindParentTag(tag NodeTag) NodeTag

type Annotation added in v0.36.0

type Annotation struct {
	Name     AnnotationName // eg template/code
	Content  string         // eg if True:
	Position *filepos.Position
}

func NewAnnotationFromString added in v0.39.0

func NewAnnotationFromString(data string, opts MetaOpts) (Annotation, error)

NewAnnotationFromString constructs an Annotation from a given string.

if opts.IgnoreUnknown is true and the annotation is unknown, it is returned as a comment. if opts.IgnoreUnknown is false and the annotation is unknown, returns an error.

type AnnotationName added in v0.36.0

type AnnotationName string
const (
	AnnotationComment AnnotationName = "comment"
	AnnotationCode    AnnotationName = "template/code"
	AnnotationValue   AnnotationName = "template/value"
)
const (
	AnnotationNameComment AnnotationName = "comment"
)

type AnnotationNs added in v0.36.0

type AnnotationNs string

type CompiledTemplate

type CompiledTemplate struct {
	// contains filtered or unexported fields
}

func NewCompiledTemplate

func NewCompiledTemplate(name string, code []Line,
	instructions *InstructionSet, nodes *Nodes,
	evalDialects EvaluationCtxDialects) *CompiledTemplate

func (*CompiledTemplate) Code

func (e *CompiledTemplate) Code() []Line

func (*CompiledTemplate) CodeAsString

func (e *CompiledTemplate) CodeAsString() string

func (*CompiledTemplate) CodeAtLine

func (e *CompiledTemplate) CodeAtLine(pos *filepos.Position) *Line

func (*CompiledTemplate) DebugCodeAsString

func (e *CompiledTemplate) DebugCodeAsString() string

func (*CompiledTemplate) Eval

func (e *CompiledTemplate) Eval(thread *starlark.Thread, loader CompiledTemplateLoader) (
	starlark.StringDict, interface{}, error)

func (*CompiledTemplate) TplReplaceNode

func (e *CompiledTemplate) TplReplaceNode(
	thread *starlark.Thread, f *starlark.Builtin,
	args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error)

type CompiledTemplateError

type CompiledTemplateError struct {
	Positions []CompiledTemplateErrorPosition
	Msg       string
}

type CompiledTemplateErrorPosition

type CompiledTemplateErrorPosition struct {
	Filename     string
	ContextName  string
	TemplateLine *Line

	BeforeTemplateLine *Line
	AfterTemplateLine  *Line
}

type CompiledTemplateLoader

type CompiledTemplateLoader interface {
	FindCompiledTemplate(string) (*CompiledTemplate, error)
	Load(*starlark.Thread, string) (starlark.StringDict, error)
}

type CompiledTemplateMultiError

type CompiledTemplateMultiError struct {
	// contains filtered or unexported fields
}

func (CompiledTemplateMultiError) Error

type EvaluationCtx

type EvaluationCtx struct {
	// contains filtered or unexported fields
}

func (*EvaluationCtx) RootNode

func (e *EvaluationCtx) RootNode() interface{}

func (*EvaluationCtx) RootNodeAsStarlarkValue

func (e *EvaluationCtx) RootNodeAsStarlarkValue() starlark.Value

func (*EvaluationCtx) TplCollectNodeAnnotation

func (e *EvaluationCtx) TplCollectNodeAnnotation(
	thread *starlark.Thread, f *starlark.Builtin,
	args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error)

args(args..., kwargs...)

func (*EvaluationCtx) TplReplace

func (e *EvaluationCtx) TplReplace(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error)

func (*EvaluationCtx) TplSetMapItemKey added in v0.17.0

func (e *EvaluationCtx) TplSetMapItemKey(
	thread *starlark.Thread, _ *starlark.Builtin,
	args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error)

args(nodeTag, value Value)

func (*EvaluationCtx) TplSetNode

func (e *EvaluationCtx) TplSetNode(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error)

args(nodeTag, value Value)

func (*EvaluationCtx) TplStartNode

func (e *EvaluationCtx) TplStartNode(
	thread *starlark.Thread, _ *starlark.Builtin,
	args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error)

args(nodeTag)

func (*EvaluationCtx) TplStartNodeAnnotation

func (e *EvaluationCtx) TplStartNodeAnnotation(
	thread *starlark.Thread, f *starlark.Builtin,
	args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error)

args(nodeTag, name, values)

type EvaluationCtxDialect

type EvaluationCtxDialect interface {
	PrepareNode(parentNode EvaluationNode, val EvaluationNode) error
	SetMapItemKey(node EvaluationNode, val interface{}) error
	Replace(parentNodes []EvaluationNode, val interface{}) error
	ShouldWrapRootValue(val interface{}) bool
	WrapRootValue(val interface{}) interface{}
}

type EvaluationCtxDialectName

type EvaluationCtxDialectName string

type EvaluationNode

type EvaluationNode interface {
	GetValues() []interface{}
	SetValue(interface{}) error
	AddValue(interface{}) error
	ResetValue()
	GetAnnotations() interface{}
	SetAnnotations(interface{})
	DeepCopyAsInterface() interface{} // expects that result implements EvaluationNode
}

type Instruction

type Instruction struct {
	// contains filtered or unexported fields
}

func (Instruction) AsString

func (i Instruction) AsString() string

func (Instruction) Op

func (i Instruction) Op() InstructionOp

func (Instruction) WithDebug

func (i Instruction) WithDebug(info string) Instruction

type InstructionOp

type InstructionOp struct {
	Name string
}

func (InstructionOp) WithArgs

func (op InstructionOp) WithArgs(args ...string) Instruction

type InstructionSet

type InstructionSet struct {
	SetCtxType            InstructionOp
	StartCtx              InstructionOp
	EndCtx                InstructionOp
	StartNodeAnnotation   InstructionOp
	CollectNodeAnnotation InstructionOp
	StartNode             InstructionOp
	SetNode               InstructionOp
	SetMapItemKey         InstructionOp
	ReplaceNode           InstructionOp
}

func NewInstructionSet

func NewInstructionSet() *InstructionSet

func (*InstructionSet) NewCode

func (is *InstructionSet) NewCode(code string) Instruction

func (*InstructionSet) NewEndCtx

func (is *InstructionSet) NewEndCtx() Instruction

func (*InstructionSet) NewEndCtxNone

func (is *InstructionSet) NewEndCtxNone() Instruction

func (*InstructionSet) NewSetCtxType

func (is *InstructionSet) NewSetCtxType(dialect EvaluationCtxDialectName) Instruction

func (*InstructionSet) NewSetMapItemKey added in v0.17.0

func (is *InstructionSet) NewSetMapItemKey(nodeTag NodeTag, code string) Instruction

func (*InstructionSet) NewSetNode

func (is *InstructionSet) NewSetNode(nodeTag NodeTag) Instruction

func (*InstructionSet) NewSetNodeValue

func (is *InstructionSet) NewSetNodeValue(nodeTag NodeTag, code string) Instruction

func (*InstructionSet) NewStartCtx

func (is *InstructionSet) NewStartCtx(dialect EvaluationCtxDialectName) Instruction

func (*InstructionSet) NewStartNode

func (is *InstructionSet) NewStartNode(nodeTag NodeTag) Instruction

func (*InstructionSet) NewStartNodeAnnotation

func (is *InstructionSet) NewStartNodeAnnotation(nodeTag NodeTag, ann Annotation) Instruction

type Line added in v0.32.0

type Line struct {
	Instruction Instruction
	SourceLine  *SourceLine
}

func NewCodeFromBytes

func NewCodeFromBytes(bs []byte, instructions *InstructionSet) []Line

func NewCodeFromBytesAtPosition

func NewCodeFromBytesAtPosition(bs []byte, pos *filepos.Position, instructions *InstructionSet) []Line

type Meta added in v0.36.0

type Meta struct {
	Annotations []*Annotation
}

type MetaOpts added in v0.36.0

type MetaOpts struct {
	IgnoreUnknown bool
}

type NodeAnnotation

type NodeAnnotation struct {
	Args     starlark.Tuple
	Kwargs   []starlark.Tuple
	Position *filepos.Position
}

type NodeAnnotations

type NodeAnnotations map[AnnotationName]NodeAnnotation

func NewAnnotations

func NewAnnotations(node EvaluationNode) NodeAnnotations

func (NodeAnnotations) Args

func (NodeAnnotations) DeepCopy

func (as NodeAnnotations) DeepCopy() NodeAnnotations

func (NodeAnnotations) DeepCopyAsInterface

func (as NodeAnnotations) DeepCopyAsInterface() interface{}

func (NodeAnnotations) DeleteNs

func (as NodeAnnotations) DeleteNs(ns AnnotationNs)

func (NodeAnnotations) Has

func (as NodeAnnotations) Has(name AnnotationName) bool

func (NodeAnnotations) Kwargs

func (as NodeAnnotations) Kwargs(name AnnotationName) []starlark.Tuple

type NodeTag

type NodeTag struct {
	// contains filtered or unexported fields
}

func NewNodeTag

func NewNodeTag(id int) NodeTag

func NewNodeTagFromStarlarkValue

func NewNodeTagFromStarlarkValue(val starlark.Value) (NodeTag, error)

func (NodeTag) AsString

func (t NodeTag) AsString() string

func (NodeTag) Equals

func (t NodeTag) Equals(other NodeTag) bool

func (NodeTag) String

func (t NodeTag) String() string

type Nodes

type Nodes struct {
	// contains filtered or unexported fields
}

func NewNodes

func NewNodes() *Nodes

func (*Nodes) AddNode

func (n *Nodes) AddNode(node EvaluationNode, parentTag NodeTag) NodeTag

func (*Nodes) AddRootNode

func (n *Nodes) AddRootNode(node EvaluationNode) NodeTag

func (*Nodes) Ancestors

func (n *Nodes) Ancestors() Ancestors

func (*Nodes) FindNode

func (n *Nodes) FindNode(tag NodeTag) (EvaluationNode, bool)

type NoopCompiledTemplateLoader

type NoopCompiledTemplateLoader struct {
	// contains filtered or unexported fields
}

func NewNoopCompiledTemplateLoader added in v0.26.0

func NewNoopCompiledTemplateLoader(tpl *CompiledTemplate) NoopCompiledTemplateLoader

func (NoopCompiledTemplateLoader) FindCompiledTemplate

func (l NoopCompiledTemplateLoader) FindCompiledTemplate(_ string) (*CompiledTemplate, error)

func (NoopCompiledTemplateLoader) Load

type ProgramAST

type ProgramAST struct {
	// contains filtered or unexported fields
}

func NewProgramAST

func NewProgramAST(f *syntax.File, instructions *InstructionSet) *ProgramAST

func (*ProgramAST) InsertTplCtxs

func (r *ProgramAST) InsertTplCtxs()

type SourceLine

type SourceLine struct {
	Position  *filepos.Position
	Content   string
	Selection *SourceLine
}

func NewSourceLine added in v0.17.0

func NewSourceLine(pos *filepos.Position, content string) *SourceLine

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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