parser

package
v0.2.680 Latest Latest
Warning

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

Go to latest
Published: May 6, 2024 License: MIT Imports: 13 Imported by: 13

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrLegacyFileFormat = errors.New("legacy file format - run templ migrate")
View Source
var ErrNonSpaceCharacter = errors.New("non space character found")
View Source
var ErrTemplateNotFound = errors.New("template not found")

Functions

func ExpressionOf added in v0.2.282

func ExpressionOf(p parse.Parser[string]) parse.Parser[Expression]

func StripType added in v0.2.282

func StripType[T any](p parse.Parser[T]) parse.Parser[any]

StripType takes the parser and throws away the return value.

Types

type Attribute

type Attribute interface {
	// Write out the string.
	Write(w io.Writer, indent int) error
}

type BoolConstantAttribute

type BoolConstantAttribute struct {
	Name      string
	NameRange Range
}

<hr noshade/>

func (BoolConstantAttribute) String

func (bca BoolConstantAttribute) String() string

func (BoolConstantAttribute) Write added in v0.2.282

func (bca BoolConstantAttribute) Write(w io.Writer, indent int) error

type BoolExpressionAttribute

type BoolExpressionAttribute struct {
	Name       string
	Expression Expression
	NameRange  Range
}

noshade={ templ.Bool(...) }

func (BoolExpressionAttribute) String

func (bea BoolExpressionAttribute) String() string

func (BoolExpressionAttribute) Write added in v0.2.282

func (bea BoolExpressionAttribute) Write(w io.Writer, indent int) error

type CSSProperty

type CSSProperty interface {
	IsCSSProperty() bool
	Write(w io.Writer, indent int) error
}

CSSProperty is a CSS property and value pair.

type CSSTemplate

type CSSTemplate struct {
	Name       string
	Expression Expression
	Properties []CSSProperty
}

CSS definition.

css Name() {
  color: #ffffff;
  background-color: { constants.BackgroundColor };
  background-image: url('./somewhere.png');
}

func (CSSTemplate) IsTemplateFileNode

func (css CSSTemplate) IsTemplateFileNode() bool

func (CSSTemplate) Write

func (css CSSTemplate) Write(w io.Writer, indent int) error

type CallTemplateExpression

type CallTemplateExpression struct {
	// Expression returns a template to execute.
	Expression Expression
}

CallTemplateExpression can be used to create and render a template using data. {! Other(p.First, p.Last) } or it can be used to render a template parameter. {! v }

func (CallTemplateExpression) IsNode

func (cte CallTemplateExpression) IsNode() bool

func (CallTemplateExpression) Write

func (cte CallTemplateExpression) Write(w io.Writer, indent int) error

type CaseExpression

type CaseExpression struct {
	Expression Expression
	Children   []Node
}

case "Something":

type ChildrenExpression added in v0.2.184

type ChildrenExpression struct{}

ChildrenExpression can be used to rended the children of a templ element. { children ... }

func (ChildrenExpression) IsNode added in v0.2.184

func (ChildrenExpression) IsNode() bool

func (ChildrenExpression) Write added in v0.2.184

func (ChildrenExpression) Write(w io.Writer, indent int) error

type CompositeNode added in v0.2.590

type CompositeNode interface {
	Node
	ChildNodes() []Node
}

type ConditionalAttribute added in v0.2.282

type ConditionalAttribute struct {
	Expression Expression
	Then       []Attribute
	Else       []Attribute
}
<a href="test" \
	if active {
   class="isActive"
 }

func (ConditionalAttribute) String added in v0.2.282

func (ca ConditionalAttribute) String() string

func (ConditionalAttribute) Write added in v0.2.282

func (ca ConditionalAttribute) Write(w io.Writer, indent int) error

type ConstantAttribute

type ConstantAttribute struct {
	Name        string
	Value       string
	SingleQuote bool
	NameRange   Range
}

href=""

func (ConstantAttribute) String

func (ca ConstantAttribute) String() string

func (ConstantAttribute) Write added in v0.2.282

func (ca ConstantAttribute) Write(w io.Writer, indent int) error

type ConstantCSSProperty

type ConstantCSSProperty struct {
	Name  string
	Value string
}

color: #ffffff;

func (ConstantCSSProperty) IsCSSProperty

func (c ConstantCSSProperty) IsCSSProperty() bool

func (ConstantCSSProperty) String added in v0.2.334

func (c ConstantCSSProperty) String(minified bool) string

func (ConstantCSSProperty) Write

func (c ConstantCSSProperty) Write(w io.Writer, indent int) error

type Diagnostic added in v0.2.501

type Diagnostic struct {
	Message string
	Range   Range
}

Diagnostic for template file.

func Diagnose added in v0.2.590

func Diagnose(t TemplateFile) ([]Diagnostic, error)

type DocType

type DocType struct {
	Value string
}

<!DOCTYPE html>

func (DocType) IsNode

func (dt DocType) IsNode() bool

func (DocType) Write

func (dt DocType) Write(w io.Writer, indent int) error

type Element

type Element struct {
	Name           string
	Attributes     []Attribute
	IndentAttrs    bool
	Children       []Node
	IndentChildren bool
	TrailingSpace  TrailingSpace
	NameRange      Range
}

<a .../> or <div ...>...</div>

func (Element) ChildNodes added in v0.2.590

func (e Element) ChildNodes() []Node

func (Element) IsBlockElement added in v0.2.408

func (e Element) IsBlockElement() bool

func (Element) IsNode

func (e Element) IsNode() bool

func (Element) Trailing added in v0.2.408

func (e Element) Trailing() TrailingSpace

func (Element) Validate

func (e Element) Validate() (msgs []string, ok bool)

Validate that no invalid expressions have been used.

func (Element) Write

func (e Element) Write(w io.Writer, indent int) error

type ElseIfExpression added in v0.2.296

type ElseIfExpression struct {
	Expression Expression
	Then       []Node
}

type Expression

type Expression struct {
	Value string
	Range Range
}

Expression containing Go code.

func NewExpression

func NewExpression(value string, from, to parse.Position) Expression

NewExpression creates a Go expression.

type ExpressionAttribute

type ExpressionAttribute struct {
	Name       string
	Expression Expression
	NameRange  Range
}

href={ ... }

func (ExpressionAttribute) String

func (ea ExpressionAttribute) String() string

func (ExpressionAttribute) Write added in v0.2.282

func (ea ExpressionAttribute) Write(w io.Writer, indent int) (err error)

type ExpressionCSSProperty

type ExpressionCSSProperty struct {
	Name  string
	Value StringExpression
}

background-color: { constants.BackgroundColor };

func (ExpressionCSSProperty) IsCSSProperty

func (c ExpressionCSSProperty) IsCSSProperty() bool

func (ExpressionCSSProperty) Write

func (c ExpressionCSSProperty) Write(w io.Writer, indent int) error

type ForExpression

type ForExpression struct {
	Expression Expression
	Children   []Node
}
for i, v := range p.Addresses {
  {! Address(v) }
}

func (ForExpression) ChildNodes added in v0.2.590

func (fe ForExpression) ChildNodes() []Node

func (ForExpression) IsNode

func (fe ForExpression) IsNode() bool

func (ForExpression) Write

func (fe ForExpression) Write(w io.Writer, indent int) error

type GoComment added in v0.2.408

type GoComment struct {
	Contents  string
	Multiline bool
}

GoComment.

func (GoComment) IsNode added in v0.2.408

func (c GoComment) IsNode() bool

func (GoComment) Write added in v0.2.408

func (c GoComment) Write(w io.Writer, indent int) error

type HTMLComment added in v0.2.408

type HTMLComment struct {
	Contents string
}

HTMLComment.

func (HTMLComment) IsNode added in v0.2.408

func (c HTMLComment) IsNode() bool

func (HTMLComment) Write added in v0.2.408

func (c HTMLComment) Write(w io.Writer, indent int) error

type HTMLTemplate

type HTMLTemplate struct {
	Expression Expression
	Children   []Node
}

HTMLTemplate definition.

templ Name(p Parameter) {
  if ... {
      <Element></Element>
  }
}

func (HTMLTemplate) IsTemplateFileNode

func (t HTMLTemplate) IsTemplateFileNode() bool

func (HTMLTemplate) Write

func (t HTMLTemplate) Write(w io.Writer, indent int) error

type IfExpression

type IfExpression struct {
	Expression Expression
	Then       []Node
	ElseIfs    []ElseIfExpression
	Else       []Node
}

if p.Type == "test" && p.thing { }

func (IfExpression) ChildNodes added in v0.2.590

func (n IfExpression) ChildNodes() []Node

func (IfExpression) IsNode

func (n IfExpression) IsNode() bool

func (IfExpression) Write

func (n IfExpression) Write(w io.Writer, indent int) error

type Node

type Node interface {
	IsNode() bool
	// Write out the string.
	Write(w io.Writer, indent int) error
}

A Node appears within a template, e.g. an StringExpression, Element, IfExpression etc.

type Nodes added in v0.2.501

type Nodes struct {
	Nodes []Node
}

type Package

type Package struct {
	Expression Expression
}

func (Package) Write

func (p Package) Write(w io.Writer, indent int) error

type Position

type Position struct {
	Index int64
	Line  uint32
	Col   uint32
}

Source mapping to map from the source code of the template to the in-memory representation.

func NewPosition

func NewPosition(index int64, line, col uint32) Position

NewPosition initialises a position.

func (Position) String

func (p Position) String() string

type Range

type Range struct {
	From Position
	To   Position
}

Range of text within a file.

func NewRange

func NewRange(from, to parse.Position) Range

NewRange creates a Range expression.

type RawElement

type RawElement struct {
	Name       string
	Attributes []Attribute
	Contents   string
}

func (RawElement) IsNode

func (e RawElement) IsNode() bool

func (RawElement) Write

func (e RawElement) Write(w io.Writer, indent int) error

type ScriptTemplate

type ScriptTemplate struct {
	Name       Expression
	Parameters Expression
	Value      string
}

ScriptTemplate is a script block.

func (ScriptTemplate) IsTemplateFileNode

func (s ScriptTemplate) IsTemplateFileNode() bool

func (ScriptTemplate) Write

func (s ScriptTemplate) Write(w io.Writer, indent int) error

type SourceMap

type SourceMap struct {
	SourceLinesToTarget map[uint32]map[uint32]Position
	TargetLinesToSource map[uint32]map[uint32]Position
}

func NewSourceMap

func NewSourceMap() *SourceMap

NewSourceMap creates a new lookup to map templ source code to items in the parsed template.

func (*SourceMap) Add

func (sm *SourceMap) Add(src Expression, tgt Range) (updatedFrom Position)

Add an item to the lookup.

func (*SourceMap) SourcePositionFromTarget

func (sm *SourceMap) SourcePositionFromTarget(line, col uint32) (src Position, ok bool)

SourcePositionFromTarget looks the source position using the target position. If a source exists on the line but not the col, the function will search backwards.

func (*SourceMap) TargetPositionFromSource

func (sm *SourceMap) TargetPositionFromSource(line, col uint32) (tgt Position, ok bool)

TargetPositionFromSource looks up the target position using the source position.

type SpreadAttributes added in v0.2.501

type SpreadAttributes struct {
	Expression Expression
}

<a { spread... } />

func (SpreadAttributes) String added in v0.2.501

func (sa SpreadAttributes) String() string

func (SpreadAttributes) Write added in v0.2.501

func (sa SpreadAttributes) Write(w io.Writer, indent int) error

type StringExpression

type StringExpression struct {
	Expression Expression
	// TrailingSpace lists what happens after the expression.
	TrailingSpace TrailingSpace
}

StringExpression is used within HTML elements, and for style values. { ... }

func (StringExpression) IsNode

func (se StringExpression) IsNode() bool

func (StringExpression) IsStyleDeclarationValue

func (se StringExpression) IsStyleDeclarationValue() bool

func (StringExpression) Trailing added in v0.2.408

func (se StringExpression) Trailing() TrailingSpace

func (StringExpression) Write

func (se StringExpression) Write(w io.Writer, indent int) error

type SwitchExpression

type SwitchExpression struct {
	Expression Expression
	Cases      []CaseExpression
}
switch p.Type {
 case "Something":
}

func (SwitchExpression) ChildNodes added in v0.2.590

func (se SwitchExpression) ChildNodes() []Node

func (SwitchExpression) IsNode

func (se SwitchExpression) IsNode() bool

func (SwitchExpression) Write

func (se SwitchExpression) Write(w io.Writer, indent int) error

type TemplElementExpression added in v0.2.184

type TemplElementExpression struct {
	// Expression returns a template to execute.
	Expression Expression
	// Children returns the elements in a block element.
	Children []Node
}

TemplElementExpression can be used to create and render a template using data. @Other(p.First, p.Last) or it can be used to render a template parameter. @v

func (TemplElementExpression) ChildNodes added in v0.2.590

func (tee TemplElementExpression) ChildNodes() []Node

func (TemplElementExpression) IsNode added in v0.2.184

func (tee TemplElementExpression) IsNode() bool

func (TemplElementExpression) Write added in v0.2.184

func (tee TemplElementExpression) Write(w io.Writer, indent int) error

type TemplateFile

type TemplateFile struct {
	// Header contains comments or whitespace at the top of the file.
	Header []TemplateFileGoExpression
	// Package expression.
	Package Package
	// Nodes in the file.
	Nodes []TemplateFileNode
}

func Parse

func Parse(fileName string) (TemplateFile, error)

func ParseString

func ParseString(template string) (TemplateFile, error)

func (TemplateFile) Write

func (tf TemplateFile) Write(w io.Writer) error

type TemplateFileGoExpression added in v0.2.476

type TemplateFileGoExpression struct {
	Expression    Expression
	BeforePackage bool
}

TemplateFileGoExpression within a TemplateFile

func (TemplateFileGoExpression) IsTemplateFileNode added in v0.2.476

func (exp TemplateFileGoExpression) IsTemplateFileNode() bool

func (TemplateFileGoExpression) Write added in v0.2.476

func (exp TemplateFileGoExpression) Write(w io.Writer, indent int) error

type TemplateFileNode

type TemplateFileNode interface {
	IsTemplateFileNode() bool
	Write(w io.Writer, indent int) error
}

TemplateFileNode can be a Template, CSS, Script or Go.

type TemplateFileParser

type TemplateFileParser struct {
	DefaultPackage string
}

func NewTemplateFileParser

func NewTemplateFileParser(pkg string) TemplateFileParser

NewTemplateFileParser creates a new TemplateFileParser.

func (TemplateFileParser) Parse

func (p TemplateFileParser) Parse(pi *parse.Input) (tf TemplateFile, ok bool, err error)

type Text

type Text struct {
	// Value is the raw HTML encoded value.
	Value string
	// TrailingSpace lists what happens after the text.
	TrailingSpace TrailingSpace
}

Text node within the document.

func (Text) IsNode

func (t Text) IsNode() bool

func (Text) Trailing added in v0.2.408

func (t Text) Trailing() TrailingSpace

func (Text) Write

func (t Text) Write(w io.Writer, indent int) error

type TrailingSpace added in v0.2.408

type TrailingSpace string

TrailingSpace defines the whitespace that may trail behind the close of an element, a text node, or string expression.

const (
	SpaceNone       TrailingSpace = ""
	SpaceHorizontal TrailingSpace = " "
	SpaceVertical   TrailingSpace = "\n"
)

func NewTrailingSpace added in v0.2.408

func NewTrailingSpace(s string) (ts TrailingSpace, err error)

type Whitespace

type Whitespace struct {
	Value string
}

Whitespace.

func (Whitespace) IsNode

func (ws Whitespace) IsNode() bool

func (Whitespace) Write

func (ws Whitespace) Write(w io.Writer, indent int) error

type WhitespaceTrailer added in v0.2.408

type WhitespaceTrailer interface {
	Trailing() TrailingSpace
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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