Documentation
¶
Index ¶
- Variables
- func ExpressionOf(p parse.Parser[string]) parse.Parser[Expression]
- func StripType[T any](p parse.Parser[T]) parse.Parser[any]
- type Attribute
- type AttributeKey
- type BoolConstantAttribute
- type BoolExpressionAttribute
- type CSSProperty
- type CSSTemplate
- type CallTemplateExpression
- type CaseExpression
- type ChildrenExpression
- type CompositeNode
- type ConditionalAttribute
- type ConstantAttribute
- type ConstantAttributeKey
- type ConstantCSSProperty
- type Diagnostic
- type DocType
- type Element
- func (e Element) ChildNodes() []Node
- func (e Element) IsBlockElement() bool
- func (e *Element) IsNode() bool
- func (e Element) IsVoidElement() bool
- func (e Element) Trailing() TrailingSpace
- func (e Element) Validate() (msgs []string, ok bool)
- func (e *Element) Visit(v Visitor) error
- func (e *Element) Write(w io.Writer, indent int) error
- type ElseIfExpression
- type Expression
- type ExpressionAttribute
- type ExpressionAttributeKey
- type ExpressionCSSProperty
- type Fallthrough
- type ForExpression
- type GoCode
- type GoComment
- type HTMLComment
- type HTMLTemplate
- type IfExpression
- type Node
- type Nodes
- type Package
- type Position
- type Range
- type RawElement
- type ScriptContents
- type ScriptElement
- type ScriptTemplate
- type SourceMap
- func (sm *SourceMap) Add(src Expression, tgt Range) (updatedFrom Position)
- func (sm *SourceMap) AddSymbolRange(src Range, tgt Range)
- func (sm *SourceMap) SourcePositionFromTarget(line, col uint32) (src Position, ok bool)
- func (sm *SourceMap) SymbolSourceRangeFromTarget(line, col uint32) (src Range, ok bool)
- func (sm *SourceMap) SymbolTargetRangeFromSource(line, col uint32) (tgt Range, ok bool)
- func (sm *SourceMap) TargetPositionFromSource(line, col uint32) (tgt Position, ok bool)
- type SpreadAttributes
- type StringExpression
- type SwitchExpression
- type TemplElementExpression
- type TemplateFile
- type TemplateFileGoExpression
- type TemplateFileNode
- type TemplateFileParser
- type Text
- type TrailingSpace
- type UntilNotFoundError
- type Visitor
- type Whitespace
- type WhitespaceTrailer
Constants ¶
This section is empty.
Variables ¶
var ErrLegacyFileFormat = errors.New("legacy file format - run templ migrate")
var ErrNonSpaceCharacter = errors.New("non space character found")
var ErrTemplateNotFound = errors.New("template not found")
Functions ¶
func ExpressionOf ¶ added in v0.2.282
Types ¶
type Attribute ¶
type Attribute interface {
// Write out the string*.
Write(w io.Writer, indent int) error
Visit(v Visitor) error
Copy() Attribute
}
func CopyAttributes ¶ added in v0.3.887
type AttributeKey ¶ added in v0.3.887
type BoolConstantAttribute ¶
type BoolConstantAttribute struct {
Key AttributeKey
}
<hr noshade/>
func (*BoolConstantAttribute) Copy ¶ added in v0.3.887
func (bca *BoolConstantAttribute) Copy() Attribute
func (*BoolConstantAttribute) String ¶
func (bca *BoolConstantAttribute) String() string
func (*BoolConstantAttribute) Visit ¶ added in v0.3.887
func (bca *BoolConstantAttribute) Visit(v Visitor) error
type BoolExpressionAttribute ¶
type BoolExpressionAttribute struct {
Key AttributeKey
Expression Expression
}
noshade={ templ.Bool(...) }
func (*BoolExpressionAttribute) Copy ¶ added in v0.3.887
func (bea *BoolExpressionAttribute) Copy() Attribute
func (*BoolExpressionAttribute) String ¶
func (bea *BoolExpressionAttribute) String() string
func (*BoolExpressionAttribute) Visit ¶ added in v0.3.887
func (bea *BoolExpressionAttribute) Visit(v Visitor) error
type CSSProperty ¶
type CSSProperty interface {
IsCSSProperty() bool
Write(w io.Writer, indent int) error
Visit(v Visitor) error
}
CSSProperty is a CSS property and value pair.
type CSSTemplate ¶
type CSSTemplate struct {
Range Range
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) Visit ¶ added in v0.3.887
func (css *CSSTemplate) Visit(v Visitor) error
type CallTemplateExpression ¶
type CallTemplateExpression struct {
// Expression returns a template to execute.
Expression Expression
Range Range
}
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) Visit ¶ added in v0.3.887
func (cte *CallTemplateExpression) Visit(v Visitor) 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) Visit ¶ added in v0.3.887
func (ce *ChildrenExpression) Visit(v Visitor) error
type CompositeNode ¶ added in v0.2.590
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) Copy ¶ added in v0.3.887
func (ca *ConditionalAttribute) Copy() Attribute
func (*ConditionalAttribute) String ¶ added in v0.2.282
func (ca *ConditionalAttribute) String() string
func (*ConditionalAttribute) Visit ¶ added in v0.3.887
func (ca *ConditionalAttribute) Visit(v Visitor) error
type ConstantAttribute ¶
type ConstantAttribute struct {
Key AttributeKey
Value string
SingleQuote bool
}
href=""
func (*ConstantAttribute) Copy ¶ added in v0.3.887
func (ca *ConstantAttribute) Copy() Attribute
func (*ConstantAttribute) String ¶
func (ca *ConstantAttribute) String() string
func (*ConstantAttribute) Visit ¶ added in v0.3.887
func (ca *ConstantAttribute) Visit(v Visitor) error
type ConstantAttributeKey ¶ added in v0.3.887
func (ConstantAttributeKey) String ¶ added in v0.3.887
func (c ConstantAttributeKey) String() string
type ConstantCSSProperty ¶
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) Visit ¶ added in v0.3.887
func (c *ConstantCSSProperty) Visit(v Visitor) error
type Diagnostic ¶ added in v0.2.501
Diagnostic for template file.
func Diagnose ¶ added in v0.2.590
func Diagnose(t *TemplateFile) ([]Diagnostic, error)
type Element ¶
type Element struct {
Name string
Attributes []Attribute
IndentAttrs bool
Children []Node
IndentChildren bool
TrailingSpace TrailingSpace
NameRange Range
Range Range
}
<a .../> or <div ...>...</div>
func (Element) ChildNodes ¶ added in v0.2.590
func (Element) IsBlockElement ¶ added in v0.2.408
func (Element) IsVoidElement ¶
https://www.w3.org/TR/2011/WD-html-markup-20110113/syntax.html#void-element
func (Element) Trailing ¶ added in v0.2.408
func (e Element) Trailing() TrailingSpace
type ElseIfExpression ¶ added in v0.2.296
type ElseIfExpression struct {
Expression Expression
Then []Node
Range Range
}
type Expression ¶
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 {
Key AttributeKey
Expression Expression
}
href={ ... }
func (*ExpressionAttribute) Copy ¶ added in v0.3.887
func (ea *ExpressionAttribute) Copy() Attribute
func (*ExpressionAttribute) String ¶
func (ea *ExpressionAttribute) String() string
func (*ExpressionAttribute) Visit ¶ added in v0.3.887
func (ea *ExpressionAttribute) Visit(v Visitor) error
type ExpressionAttributeKey ¶ added in v0.3.887
type ExpressionAttributeKey struct {
Expression Expression
}
func (ExpressionAttributeKey) String ¶ added in v0.3.887
func (e ExpressionAttributeKey) String() string
type ExpressionCSSProperty ¶
type ExpressionCSSProperty struct {
Name string
Value *StringExpression
}
background-color: { constants.BackgroundColor };
func (*ExpressionCSSProperty) IsCSSProperty ¶
func (c *ExpressionCSSProperty) IsCSSProperty() bool
func (*ExpressionCSSProperty) Visit ¶ added in v0.3.887
func (c *ExpressionCSSProperty) Visit(v Visitor) error
type Fallthrough ¶ added in v0.3.977
type Fallthrough struct {
Range Range
}
func (*Fallthrough) IsNode ¶ added in v0.3.977
func (f *Fallthrough) IsNode() bool
func (*Fallthrough) Visit ¶ added in v0.3.977
func (f *Fallthrough) Visit(v Visitor) error
type ForExpression ¶
type ForExpression struct {
Expression Expression
Children []Node
Range Range
}
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) Visit ¶ added in v0.3.887
func (fe *ForExpression) Visit(v Visitor) error
type GoCode ¶ added in v0.2.697
type GoCode struct {
Expression Expression
// TrailingSpace lists what happens after the expression.
TrailingSpace TrailingSpace
Multiline bool
}
GoCode is used within HTML elements, and allows arbitrary go code. {{ ... }}
func (*GoCode) Trailing ¶ added in v0.2.697
func (gc *GoCode) Trailing() TrailingSpace
type HTMLComment ¶ added in v0.2.408
HTMLComment.
func (*HTMLComment) IsNode ¶ added in v0.2.408
func (c *HTMLComment) IsNode() bool
func (*HTMLComment) Visit ¶ added in v0.3.887
func (c *HTMLComment) Visit(v Visitor) error
type HTMLTemplate ¶
type HTMLTemplate struct {
Range Range
Expression Expression
Children []Node
}
HTMLTemplate definition.
templ Name(p Parameter) {
if ... {
<Element></Element>
}
}
func (*HTMLTemplate) IsTemplateFileNode ¶
func (t *HTMLTemplate) IsTemplateFileNode() bool
func (*HTMLTemplate) Visit ¶ added in v0.3.887
func (t *HTMLTemplate) Visit(v Visitor) error
type IfExpression ¶
type IfExpression struct {
Expression Expression
Then []Node
ElseIfs []ElseIfExpression
Else []Node
Range Range
}
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) Visit ¶ added in v0.3.887
func (n *IfExpression) Visit(v Visitor) error
type Node ¶
type Node interface {
IsNode() bool
// Write out the string*.
Write(w io.Writer, indent int) error
Visit(v Visitor) error
}
A Node appears within a template, e.g. an StringExpression, Element, IfExpression etc.
type Package ¶
type Package struct {
Expression Expression
}
type Position ¶
Source mapping to map from the source code of the template to the in-memory representation.
func NewPosition ¶
NewPosition initialises a position.
type RawElement ¶
func (*RawElement) IsNode ¶
func (e *RawElement) IsNode() bool
func (*RawElement) Visit ¶ added in v0.3.887
func (e *RawElement) Visit(v Visitor) error
type ScriptContents ¶ added in v0.3.850
type ScriptContents struct {
// Value is the raw script contents. This is nil if the Type is Go.
Value *string
// GoCode is the Go expression. This is nil if the Type is JS.
GoCode *GoCode
// InsideStringLiteral denotes how the result of any Go expression should be escaped in the output.
// - Not quoted: JSON encoded.
// - InsideStringLiteral: JS escaped (newlines become \n, `"' becomes \`\"\' etc.), HTML escaped so that a string can't contain </script>.
InsideStringLiteral bool
}
func NewScriptContentsGo ¶ added in v0.3.850
func NewScriptContentsGo(code *GoCode, insideStringLiteral bool) ScriptContents
func NewScriptContentsScriptCode ¶ added in v0.3.865
func NewScriptContentsScriptCode(value string) ScriptContents
type ScriptElement ¶ added in v0.3.850
type ScriptElement struct {
Attributes []Attribute
Contents []ScriptContents
Range Range
}
func (*ScriptElement) IsNode ¶ added in v0.3.850
func (se *ScriptElement) IsNode() bool
func (*ScriptElement) Visit ¶ added in v0.3.887
func (se *ScriptElement) Visit(v Visitor) error
type ScriptTemplate ¶
type ScriptTemplate struct {
Range Range
Name Expression
Parameters Expression
Value string
}
ScriptTemplate is a script block.
func (*ScriptTemplate) IsTemplateFileNode ¶
func (s *ScriptTemplate) IsTemplateFileNode() bool
func (*ScriptTemplate) Visit ¶ added in v0.3.887
func (s *ScriptTemplate) Visit(v Visitor) error
type SourceMap ¶
type SourceMap struct {
Expressions []string
SourceLinesToTarget map[uint32]map[uint32]Position
TargetLinesToSource map[uint32]map[uint32]Position
SourceSymbolRangeToTarget map[uint32]map[uint32]Range
TargetSymbolRangeToSource map[uint32]map[uint32]Range
}
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) AddSymbolRange ¶ added in v0.3.819
func (*SourceMap) SourcePositionFromTarget ¶
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) SymbolSourceRangeFromTarget ¶ added in v0.3.819
func (*SourceMap) SymbolTargetRangeFromSource ¶ added in v0.3.819
type SpreadAttributes ¶ added in v0.2.501
type SpreadAttributes struct {
Expression Expression
}
<a { spread... } />
func (*SpreadAttributes) Copy ¶ added in v0.3.887
func (sa *SpreadAttributes) Copy() Attribute
func (*SpreadAttributes) String ¶ added in v0.2.501
func (sa *SpreadAttributes) String() string
func (*SpreadAttributes) Visit ¶ added in v0.3.887
func (sa *SpreadAttributes) Visit(v Visitor) 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) Visit ¶ added in v0.3.887
func (se *StringExpression) Visit(v Visitor) error
type SwitchExpression ¶
type SwitchExpression struct {
Expression Expression
Cases []CaseExpression
Range Range
}
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) Visit ¶ added in v0.3.887
func (se *SwitchExpression) Visit(v Visitor) 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
Range Range
}
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) Visit ¶ added in v0.3.887
func (tee *TemplElementExpression) Visit(v Visitor) error
type TemplateFile ¶
type TemplateFile struct {
// Header contains comments or whitespace at the top of the file.
Header []*TemplateFileGoExpression
// Package expression.
Package Package
// Filepath is where the file was loaded from. It is not always available.
Filepath string
// Nodes in the file.
Nodes []TemplateFileNode
}
func Parse ¶
func Parse(fileName string) (*TemplateFile, error)
func ParseString ¶
func ParseString(template string) (*TemplateFile, error)
func (*TemplateFile) Visit ¶ added in v0.3.887
func (tf *TemplateFile) Visit(v Visitor) 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) Visit ¶ added in v0.3.887
func (exp *TemplateFileGoExpression) Visit(v Visitor) error
type TemplateFileNode ¶
type TemplateFileNode interface {
IsTemplateFileNode() bool
Write(w io.Writer, indent int) error
Visit(v Visitor) 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, matched bool, err error)
type Text ¶
type Text struct {
// Range of the text within the templ file.
Range Range
// 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) Trailing ¶ added in v0.2.408
func (t Text) Trailing() TrailingSpace
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 UntilNotFoundError ¶ added in v0.2.697
type UntilNotFoundError struct {
parse.ParseError
}
type Visitor ¶ added in v0.3.887
type Visitor interface {
VisitTemplateFile(*TemplateFile) error
VisitTemplateFileGoExpression(*TemplateFileGoExpression) error
VisitPackage(*Package) error
VisitWhitespace(*Whitespace) error
VisitCSSTemplate(*CSSTemplate) error
VisitConstantCSSProperty(*ConstantCSSProperty) error
VisitExpressionCSSProperty(*ExpressionCSSProperty) error
VisitDocType(*DocType) error
VisitHTMLTemplate(*HTMLTemplate) error
VisitText(*Text) error
VisitElement(*Element) error
VisitScriptElement(*ScriptElement) error
VisitRawElement(*RawElement) error
VisitBoolConstantAttribute(*BoolConstantAttribute) error
VisitConstantAttribute(*ConstantAttribute) error
VisitBoolExpressionAttribute(*BoolExpressionAttribute) error
VisitExpressionAttribute(*ExpressionAttribute) error
VisitSpreadAttributes(*SpreadAttributes) error
VisitConditionalAttribute(*ConditionalAttribute) error
VisitGoComment(*GoComment) error
VisitHTMLComment(*HTMLComment) error
VisitCallTemplateExpression(*CallTemplateExpression) error
VisitTemplElementExpression(*TemplElementExpression) error
VisitChildrenExpression(*ChildrenExpression) error
VisitIfExpression(*IfExpression) error
VisitSwitchExpression(*SwitchExpression) error
VisitForExpression(*ForExpression) error
VisitGoCode(*GoCode) error
VisitStringExpression(*StringExpression) error
VisitScriptTemplate(*ScriptTemplate) error
VisitFallthrough(*Fallthrough) error
}
Visitor is an interface for visiting nodes in the parse tree.
type Whitespace ¶
Whitespace.
func (*Whitespace) IsNode ¶
func (ws *Whitespace) IsNode() bool
func (*Whitespace) Visit ¶ added in v0.3.887
func (ws *Whitespace) Visit(v Visitor) error
type WhitespaceTrailer ¶ added in v0.2.408
type WhitespaceTrailer interface {
Trailing() TrailingSpace
}
Source Files
¶
- calltemplateparser.go
- childrenparser.go
- conditionalattributeparser.go
- cssparser.go
- diagnostics.go
- doctypeparser.go
- elementparser.go
- expressionparser.go
- fallthroughparser.go
- forexpressionparser.go
- gocodeparser.go
- gocommentparser.go
- goparser.go
- htmlcommentparser.go
- ifexpressionparser.go
- packageparser.go
- parser.go
- raw.go
- scriptparser.go
- scripttemplateparser.go
- sourcemap.go
- stringexpressionparser.go
- structure.go
- switchexpressionparser.go
- templatefile.go
- templateparser.go
- templelementparser.go
- textparser.go
- types.go
- visitor.go
- whitespaceparser.go