parser

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Jul 9, 2017 License: MIT Imports: 4 Imported by: 33

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ASTBlock

type ASTBlock struct {
	Token

	Body     []ASTNode   // Body is the nodes before the first branch
	Branches []*ASTBlock // E.g. else and elseif w/in an if
	// contains filtered or unexported fields
}

ASTBlock represents a {% tag %}…{% endtag %}.

type ASTNode

type ASTNode interface{}

ASTNode is a node of an AST.

type ASTObject

type ASTObject struct {
	Token
	Expr expression.Expression
}

ASTObject is an {{ object }} object.

type ASTRaw

type ASTRaw struct {
	Slices []string
}

ASTRaw holds the text between the start and end of a raw tag.

type ASTSeq

type ASTSeq struct {
	Children []ASTNode
}

ASTSeq is a sequence of nodes.

type ASTTag

type ASTTag struct {
	Token
}

ASTTag is a tag {% tag %} that is not a block start or end.

type ASTText

type ASTText struct {
	Token
}

ASTText is a text span, that is rendered verbatim.

type BlockSyntax

type BlockSyntax interface {
	IsBlock() bool
	CanHaveParent(BlockSyntax) bool
	IsBlockEnd() bool
	IsBlockStart() bool
	IsBranch() bool
	ParentTags() []string
	RequiresParent() bool
	TagName() string
}

BlockSyntax supplies the parser with syntax information about blocks.

type Config

type Config struct {
	expression.Config
	Grammar  Grammar
	Filename string
	LineNo   int
}

A Config holds configuration information for parsing and rendering.

func NewConfig

func NewConfig() Config

NewConfig creates a parser Config.

func (Config) Parse

func (c Config) Parse(source string) (ASTNode, error)

Parse parses a source template. It returns an AST root, that can be compiled and evaluated.

type Grammar

type Grammar interface {
	BlockSyntax(string) (BlockSyntax, bool)
}

Grammar supplies the parser with syntax information about blocks.

type ParseError

type ParseError string

A ParseError is a parse error during the template parsing.

func (ParseError) Error

func (e ParseError) Error() string

type SourceInfo

type SourceInfo struct {
	Pathname string
	// contains filtered or unexported fields
}

SourceInfo contains a Chunk's source information

func (SourceInfo) String

func (s SourceInfo) String() string

type Token

type Token struct {
	Type       TokenType
	SourceInfo SourceInfo
	Name       string // Name is the tag name of a tag Chunk. E.g. the tag name of "{% if 1 %}" is "if".
	Args       string // Parameters is the tag arguments of a tag Chunk. E.g. the tag arguments of "{% if 1 %}" is "1".
	Source     string // Source is the entirety of the token, including the "{{", "{%", etc. markers.
}

A Token is either an object {{a.b}}, a tag {%if a>b%}, or a text chunk (anything outside of {{}} and {%%}.)

func Scan

func Scan(data string, pathname string, firstLine int) []Token

Scan breaks a string into a sequence of Tokens.

func (Token) String

func (c Token) String() string

type TokenType

type TokenType int

TokenType is the type of a Chunk

const (
	// TextTokenType is the type of a text Chunk
	TextTokenType TokenType = iota
	// TagTokenType is the type of a tag Chunk "{%…%}"
	TagTokenType
	// ObjTokenType is the type of an object Chunk "{{…}}"
	ObjTokenType
)

func (TokenType) String

func (i TokenType) String() string

Jump to

Keyboard shortcuts

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