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)
- type Attribute
- 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 NodeType
- type Parser
- type Token
- type TokenType
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Node ¶
type Node struct {
Type NodeType
Data string
Attributes []Attribute
Mul int
Parent, FirstChild, LastChild, NextSibling, PrevSibling *Node
}
func (*Node) AppendChild ¶
func (*Node) GetAttribute ¶ added in v0.5.2
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(pool *sync.Pool) 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 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.