Documentation
¶
Overview ¶
Package htmlbind parses typed HTML template sources into an AST.
Index ¶
- func Generate(filename string, source []byte, options GenerateOptions) ([]byte, error)
- type Annotation
- type Attribute
- type AttributePart
- type AwaitBinding
- type AwaitNode
- type BinaryExpr
- type Body
- type CallExpr
- type CommentNode
- type CompileError
- type ComponentNode
- type ConditionalExpr
- type Declaration
- type DoctypeNode
- type ElementNode
- type EnumDecl
- type EnumMember
- type Expr
- type ExpressionNode
- type ExternalDecl
- type Field
- type ForNode
- type GenerateOptions
- type HeadNode
- type IdentifierExpr
- type IfNode
- type ImportDecl
- type IndexExpr
- type LiteralExpr
- type MemberExpr
- type Module
- type Node
- type PackageDecl
- type Parameter
- type ParseError
- type Position
- type SlotNode
- type TemplateDecl
- type TextNode
- type TypeDecl
- type TypeRef
- type UnaryExpr
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Generate ¶
func Generate(filename string, source []byte, options GenerateOptions) ([]byte, error)
Generate parses, validates, and compiles an HTML template module to Go.
Each component becomes an immutable render plan: an instruction list typed by its parameter struct, executed by the shared htmlbind coordinator. Generated code owns no response concerns, so it depends on neither net/http nor any content negotiation.
Types ¶
type Annotation ¶ added in v0.1.16
type Annotation = syntax.Annotation
type Attribute ¶
type Attribute struct {
Kind string `json:"kind"`
Pos Position `json:"pos"`
Name string `json:"name"`
Boolean bool `json:"boolean,omitempty"`
Value []AttributePart `json:"value,omitempty"`
}
type AttributePart ¶
type AwaitBinding ¶ added in v0.1.16
type AwaitBinding = syntax.AwaitBinding
type BinaryExpr ¶
type BinaryExpr = syntax.BinaryExpr
type CommentNode ¶
type CommentNode struct {
Kind string `json:"kind"`
Pos Position `json:"pos"`
Text string `json:"text"`
}
func (*CommentNode) NodeType ¶
func (n *CommentNode) NodeType() string
type CompileError ¶
func (*CompileError) Error ¶
func (e *CompileError) Error() string
type ComponentNode ¶
type ComponentNode struct {
Kind string `json:"kind"`
Pos Position `json:"pos"`
Name string `json:"name"`
Arguments []Attribute `json:"arguments,omitempty"`
Children []Node `json:"children,omitempty"`
SelfClosing bool `json:"selfClosing,omitempty"`
}
func (*ComponentNode) NodeType ¶
func (n *ComponentNode) NodeType() string
type ConditionalExpr ¶
type ConditionalExpr = syntax.ConditionalExpr
type Declaration ¶
type Declaration = syntax.Declaration
type DoctypeNode ¶
type DoctypeNode struct {
Kind string `json:"kind"`
Pos Position `json:"pos"`
Text string `json:"text"`
}
func (*DoctypeNode) NodeType ¶
func (n *DoctypeNode) NodeType() string
type ElementNode ¶
type ElementNode struct {
Kind string `json:"kind"`
Pos Position `json:"pos"`
Name string `json:"name"`
Attributes []Attribute `json:"attributes,omitempty"`
Children []Node `json:"children,omitempty"`
SelfClosing bool `json:"selfClosing,omitempty"`
}
func (*ElementNode) NodeType ¶
func (n *ElementNode) NodeType() string
type EnumMember ¶
type EnumMember = syntax.EnumMember
type ExpressionNode ¶
type ExpressionNode = syntax.ExpressionNode
type ExternalDecl ¶
type ExternalDecl = syntax.ExternalDecl
type GenerateOptions ¶
type GenerateOptions struct {
// Package overrides the template package/module declaration.
Package string
// ContextExternals names the external functions whose Go implementation
// takes a leading context.Context. Those calls receive the boundary's
// context; every other external is called as an ordinary function.
//
// The caller discovers this by reading the package's Go sources, so the
// template declaration stays the same either way and the choice belongs to
// whoever writes the implementation.
ContextExternals map[string]bool
// PreserveWhitespace turns off requirement:static-whitespace-normalization,
// so static output keeps the authoring indentation and newlines byte for
// byte. It exists for a project comparing generated markup against
// pre-existing golden files.
PreserveWhitespace bool
}
GenerateOptions controls the generated Go file.
type HeadNode ¶ added in v0.1.15
type HeadNode struct {
Kind string `json:"kind"`
Pos Position `json:"pos"`
Children []Node `json:"children,omitempty"`
}
HeadNode is a head element declared outside the document shell. Its children are hoisted into the merged document head instead of being emitted in place.
type IdentifierExpr ¶
type IdentifierExpr = syntax.IdentifierExpr
type ImportDecl ¶
type ImportDecl = syntax.ImportDecl
type LiteralExpr ¶
type LiteralExpr = syntax.LiteralExpr
type MemberExpr ¶
type MemberExpr = syntax.MemberExpr
type PackageDecl ¶
type PackageDecl = syntax.PackageDecl
type ParseError ¶
type ParseError = syntax.ParseError
type SlotNode ¶ added in v0.1.15
type SlotNode struct {
Kind string `json:"kind"`
Pos Position `json:"pos"`
Name string `json:"name,omitempty"`
Required bool `json:"required,omitempty"`
Default []Node `json:"default,omitempty"`
}
SlotNode marks where a bound html parameter is inserted. Name is empty for the reserved children parameter. Default holds the content rendered when the bound argument is absent.
type TemplateDecl ¶
type TemplateDecl = syntax.TemplateDecl