Documentation ¶
Overview ¶
Package ennet parses Emmet-like abbreviations and expands them into XML.
Limitations ¶
- No implicit tag names (`ul>.cls` causes an error)
- Generates always empty-element tags (yes: <a />, no: <a></a>)
- (internal) each TEXT {...}, QTEXT "..." is a token, unlike attr-list [, ..., ]
Example ¶
package main import ( "fmt" "github.com/shu-go/ennet" ) func main() { expanded, _ := ennet.Expand("ul>li.item-${ITEM$}*3") fmt.Println(expanded) }
Output: <ul><li class="item-1">ITEM1</li><li class="item-2">ITEM2</li><li class="item-3">ITEM3</li></ul>
Index ¶
- func Expand(s string) (string, error)
- func Parse(b []byte, builder Builder) (parseError error)
- func WithPool(pool *sync.Pool) func(*NodeBuilder)
- type Builder
- type Lexer
- type Node
- type NodeBuilder
- func (nb *NodeBuilder) Attribute(name, value string) error
- func (nb *NodeBuilder) Class(name string) error
- func (nb *NodeBuilder) Element(name string) error
- func (nb *NodeBuilder) GroupBegin() error
- func (nb *NodeBuilder) GroupEnd() error
- func (nb *NodeBuilder) ID(name string) error
- func (nb *NodeBuilder) Mul(count int) error
- func (b *NodeBuilder) NewNode() *Node
- func (nb *NodeBuilder) OpChild() error
- func (nb *NodeBuilder) OpClimbup(count int) error
- func (nb *NodeBuilder) OpSibling() error
- func (nb *NodeBuilder) Text(text string) error
- type NodeBuilderOption
- type NodeType
- type Parser
- type Token
- type TokenType
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func WithPool ¶ added in v0.4.2
func WithPool(pool *sync.Pool) func(*NodeBuilder)
Types ¶
type Node ¶
type Node struct { Type NodeType Data string Attribute map[string]string Mul int Parent, FirstChild, LastChild, NextSibling, PrevSibling *Node }
func (*Node) AppendChild ¶
type NodeBuilder ¶ added in v0.4.2
type NodeBuilder struct { Root *Node // contains filtered or unexported fields }
func NewNodeBuilder ¶ added in v0.4.2
func NewNodeBuilder(opts ...NodeBuilderOption) NodeBuilder
func (*NodeBuilder) Attribute ¶ added in v0.4.2
func (nb *NodeBuilder) Attribute(name, value string) error
func (*NodeBuilder) Class ¶ added in v0.4.2
func (nb *NodeBuilder) Class(name string) error
func (*NodeBuilder) Element ¶ added in v0.4.2
func (nb *NodeBuilder) Element(name string) error
func (*NodeBuilder) GroupBegin ¶ added in v0.4.2
func (nb *NodeBuilder) GroupBegin() error
func (*NodeBuilder) GroupEnd ¶ added in v0.4.2
func (nb *NodeBuilder) GroupEnd() error
func (*NodeBuilder) ID ¶ added in v0.4.2
func (nb *NodeBuilder) ID(name string) error
func (*NodeBuilder) Mul ¶ added in v0.4.2
func (nb *NodeBuilder) Mul(count int) error
func (*NodeBuilder) NewNode ¶ added in v0.4.2
func (b *NodeBuilder) NewNode() *Node
func (*NodeBuilder) OpChild ¶ added in v0.4.2
func (nb *NodeBuilder) OpChild() error
func (*NodeBuilder) OpClimbup ¶ added in v0.4.2
func (nb *NodeBuilder) OpClimbup(count int) error
func (*NodeBuilder) OpSibling ¶ added in v0.4.2
func (nb *NodeBuilder) OpSibling() error
func (*NodeBuilder) Text ¶ added in v0.4.2
func (nb *NodeBuilder) Text(text string) error
type NodeBuilderOption ¶ added in v0.4.2
type NodeBuilderOption func(*NodeBuilder)
type Parser ¶
type Parser struct {
// contains filtered or unexported fields
}
EBNF:
attr-list = "[", attr, { attr }, "]"; attr = STRING, ["=", (QTEXT | STRING)]; id = "#", STRING; class = ".", STRING; tag-element = STRING, { id | class | attr-list }, [ TEXT ]; multiplication = "*", NUMBER; element = ( tag-element | TEXT ), [multiplication]; group = "(", abbreviation, ")", [multiplication]; operator = CHILD | SIBLING | repeatable-operator; repeatable-operator = CLIMBUP, {CLIMBUP} abbreviation = (group | element), [operator, abbreviation]
Click to show internal directories.
Click to hide internal directories.