1package util
 2
 3import (
 4	"sync"
 5)
 6
 7//go:generate go run ../_tools emb-structs -i ../_tools/html5entities.json -o ./html5entities.gen.go
 8
 9var _html5entitiesOnce sync.Once
10var _html5entitiesMap map[string]*HTML5Entity
11
12func buildHTML5Entities() {
13	_html5entitiesOnce.Do(func() {
14		entities := make([]HTML5Entity, _html5entitiesLength)
15		_html5entitiesMap = make(map[string]*HTML5Entity, _html5entitiesLength)
16
17		cName := 0
18		cCharacters := 0
19		for i := range _html5entitiesLength {
20			tName := cName + int(_html5entitiesNameIndex[i])
21			tCharacters := cCharacters + int(_html5entitiesCharactersIndex[i])
22
23			name := _html5entitiesName[cName:tName]
24			e := &entities[i]
25			e.Name = name
26			e.Characters = _html5entitiesCharacters[cCharacters:tCharacters]
27			_html5entitiesMap[name] = e
28
29			cName = tName
30			cCharacters = tCharacters
31		}
32	})
33}
34
35// HTML5Entity struct represents HTML5 entitites.
36type HTML5Entity struct {
37	Name       string
38	Characters []byte
39}
40
41// LookUpHTML5EntityByName returns (an HTML5Entity, true) if an entity named
42// given name is found, otherwise (nil, false).
43func LookUpHTML5EntityByName(name string) (*HTML5Entity, bool) {
44	buildHTML5Entities()
45	v, ok := _html5entitiesMap[name]
46	return v, ok
47}