forked from rainycape/gondola
-
Notifications
You must be signed in to change notification settings - Fork 0
/
common.go
140 lines (112 loc) · 2.18 KB
/
common.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package html
func container(tag string, children []*Node) *Node {
n := &Node{
Type: TAG_NODE,
Tag: tag,
}
if len(children) > 0 {
n.Children = children[0]
for ii, v := range children[:len(children)-1] {
v.Next = children[ii+1]
}
}
return n
}
func tag(tag string, children *Node) *Node {
return &Node{
Type: TAG_NODE,
Tag: tag,
Children: children,
}
}
func ttag(tag, text string) *Node {
var children *Node
if text != "" {
children = &Node{
Type: TEXT_NODE,
Content: text,
}
}
return &Node{
Type: TAG_NODE,
Tag: tag,
Children: children,
}
}
func Text(text string) *Node {
return &Node{
Type: TEXT_NODE,
Content: text,
}
}
func A(href, text string) *Node {
return ttag("a", text).SetAttr("href", href)
}
func Abbr(title, text string) *Node {
return ttag("abbr", text).SetAttr("title", title)
}
func Article(children ...*Node) *Node {
return container("article", children)
}
func Aside(children ...*Node) *Node {
return container("aside", children)
}
func B(text string) *Node {
return ttag("b", text)
}
func Blockquote(text string) *Node {
return ttag("blockquote", text)
}
func Br() *Node {
return &Node{
Type: TAG_NODE,
Tag: "br",
Open: true,
}
}
func Button(text string) *Node {
return ttag("button", text)
}
func Caption(text string) *Node {
return ttag("caption", text)
}
func Div(children ...*Node) *Node {
return container("div", children)
}
func Em(text string) *Node {
return ttag("em", text)
}
func H1(text string) *Node {
return ttag("h1", text)
}
func H2(text string) *Node {
return ttag("h2", text)
}
func H3(text string) *Node {
return ttag("h3", text)
}
func H4(text string) *Node {
return ttag("h4", text)
}
func P(children ...*Node) *Node {
return container("p", children)
}
func Section(children ...*Node) *Node {
return container("section", children)
}
func Strong(text string) *Node {
return ttag("strong", text)
}
func Small(text string) *Node {
return ttag("small", text)
}
func Span(children ...*Node) *Node {
return container("span", children)
}
// lists
func Ul(children ...*Node) *Node {
return container("ul", children)
}
func Li(text string) *Node {
return ttag("li", text)
}