ewwet

package module
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2024 License: MIT Imports: 11 Imported by: 0

README

Package ewwet parses Emmet-like abbreviations and expands them into XML.

Go Report Card MIT License

go get

go get -u github.com/shu-go/ewwet

Example

func Example() {
	expanded, _ := ewwet.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>
}

Documentation

Overview

Package ewwet 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/ewwet"
)

func main() {
	expanded, _ := ewwet.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

Examples

Constants

View Source
const (
	Root = NodeType("ROOT")
	WIP  = NodeType("WIP")

	Element = NodeType("element")
	Text    = NodeType("text")
	Group   = NodeType("group")
)
View Source
const (
	EOF = TokenType("eof")
	ERR = TokenType("err")

	CHILD      = TokenType(">")
	SIBLING    = TokenType("+")
	CLIMBUP    = TokenType("^")
	MULT       = TokenType("*")
	GROUPBEGIN = TokenType("(")
	GROUPEND   = TokenType(")")

	ID        = TokenType("#")
	CLASS     = TokenType(".")
	ATTRBEGIN = TokenType("[")
	ATTREND   = TokenType("]")
	EQ        = TokenType("=")

	STRING = TokenType("string")
	TEXT   = TokenType(`{}`)
	QTEXT  = TokenType(`""`)
)

Variables

This section is empty.

Functions

func Expand

func Expand(s string) (string, error)

Expand expands Emmet abbreviation in string s.

func Parse

func Parse(in io.Reader, listener Listener) (parseError error)

Types

type Lexer

type Lexer struct {
	// contains filtered or unexported fields
}

func NewLexer

func NewLexer(in io.Reader) *Lexer

func (*Lexer) Back

func (l *Lexer) Back()

func (*Lexer) Dump

func (l *Lexer) Dump() string

func (*Lexer) Next

func (l *Lexer) Next() Token

func (*Lexer) Transaction

func (l *Lexer) Transaction() LexerTx

type LexerTx

type LexerTx struct {
	// contains filtered or unexported fields
}

LexerTx can not be used in pallarel

func (*LexerTx) Back

func (tx *LexerTx) Back()

func (*LexerTx) Dec

func (tx *LexerTx) Dec()

func (*LexerTx) Inc

func (tx *LexerTx) Inc()

func (*LexerTx) Next

func (tx *LexerTx) Next() Token

func (*LexerTx) Rollback

func (tx *LexerTx) Rollback()

func (*LexerTx) Transaction

func (tx *LexerTx) Transaction() LexerTx

type Listener

type Listener interface {
	Element(name string) error
	ID(name string) error
	Class(name string) error
	Attribute(name, value string) error
	Text(text string) error
	Mul(count int) error

	OpChild() error
	OpSibling() error
	OpClimbup(count int) error

	GroupBegin() error
	GroupEnd() error
}

type Node

type Node struct {
	Type      NodeType
	Data      string
	Attribute map[string]string

	Mul int

	Parent, FirstChild, LastChild, NextSibling, PrevSibling *Node
}

func (*Node) AppendChild

func (n *Node) AppendChild(child *Node) *Node

func (*Node) Dump

func (n *Node) Dump() string

type NodeListener

type NodeListener struct {
	Root *Node
	// contains filtered or unexported fields
}

func NewNodeListener

func NewNodeListener() NodeListener

func (*NodeListener) Attribute

func (nl *NodeListener) Attribute(name, value string) error

func (*NodeListener) Class

func (nl *NodeListener) Class(name string) error

func (*NodeListener) Element

func (nl *NodeListener) Element(name string) error

func (*NodeListener) GroupBegin

func (nl *NodeListener) GroupBegin() error

func (*NodeListener) GroupEnd

func (nl *NodeListener) GroupEnd() error

func (*NodeListener) ID

func (nl *NodeListener) ID(name string) error

func (*NodeListener) Mul

func (nl *NodeListener) Mul(count int) error

func (*NodeListener) OpChild

func (nl *NodeListener) OpChild() error

func (*NodeListener) OpClimbup

func (nl *NodeListener) OpClimbup(count int) error

func (*NodeListener) OpSibling

func (nl *NodeListener) OpSibling() error

func (*NodeListener) Text

func (nl *NodeListener) Text(text string) error

type NodeType

type NodeType string

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]

type Token

type Token struct {
	Type TokenType
	Text string
}

func (Token) String

func (t Token) String() string

type TokenType

type TokenType string

Jump to

Keyboard shortcuts

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