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}