@@ -5,9 +5,6 @@ package markdown
5
5
6
6
import (
7
7
"fmt"
8
- "regexp"
9
- "strings"
10
- "sync"
11
8
12
9
"code.gitea.io/gitea/modules/container"
13
10
"code.gitea.io/gitea/modules/markup"
@@ -51,7 +48,7 @@ func (g *ASTTransformer) Transform(node *ast.Document, reader text.Reader, pc pa
51
48
52
49
tocList := make ([]Header , 0 , 20 )
53
50
if rc .yamlNode != nil {
54
- metaNode := rc .toMetaNode ()
51
+ metaNode := rc .toMetaNode (g )
55
52
if metaNode != nil {
56
53
node .InsertBefore (node , firstChild , metaNode )
57
54
}
@@ -112,11 +109,6 @@ func (g *ASTTransformer) Transform(node *ast.Document, reader text.Reader, pc pa
112
109
}
113
110
}
114
111
115
- // it is copied from old code, which is quite doubtful whether it is correct
116
- var reValidIconName = sync .OnceValue (func () * regexp.Regexp {
117
- return regexp .MustCompile (`^[-\w]+$` ) // old: regexp.MustCompile("^[a-z ]+$")
118
- })
119
-
120
112
// NewHTMLRenderer creates a HTMLRenderer to render in the gitea form.
121
113
func NewHTMLRenderer (renderInternal * internal.RenderInternal , opts ... html.Option ) renderer.NodeRenderer {
122
114
r := & HTMLRenderer {
@@ -141,11 +133,11 @@ func (r *HTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) {
141
133
reg .Register (ast .KindDocument , r .renderDocument )
142
134
reg .Register (KindDetails , r .renderDetails )
143
135
reg .Register (KindSummary , r .renderSummary )
144
- reg .Register (KindIcon , r .renderIcon )
145
136
reg .Register (ast .KindCodeSpan , r .renderCodeSpan )
146
137
reg .Register (KindAttention , r .renderAttention )
147
138
reg .Register (KindTaskCheckBoxListItem , r .renderTaskCheckBoxListItem )
148
139
reg .Register (east .KindTaskCheckBox , r .renderTaskCheckBox )
140
+ reg .Register (KindRawHTML , r .renderRawHTML )
149
141
}
150
142
151
143
func (r * HTMLRenderer ) renderDocument (w util.BufWriter , source []byte , node ast.Node , entering bool ) (ast.WalkStatus , error ) {
@@ -207,30 +199,14 @@ func (r *HTMLRenderer) renderSummary(w util.BufWriter, source []byte, node ast.N
207
199
return ast .WalkContinue , nil
208
200
}
209
201
210
- func (r * HTMLRenderer ) renderIcon (w util.BufWriter , source []byte , node ast.Node , entering bool ) (ast.WalkStatus , error ) {
202
+ func (r * HTMLRenderer ) renderRawHTML (w util.BufWriter , source []byte , node ast.Node , entering bool ) (ast.WalkStatus , error ) {
211
203
if ! entering {
212
204
return ast .WalkContinue , nil
213
205
}
214
-
215
- n := node .(* Icon )
216
-
217
- name := strings .TrimSpace (strings .ToLower (string (n .Name )))
218
-
219
- if len (name ) == 0 {
220
- // skip this
221
- return ast .WalkContinue , nil
222
- }
223
-
224
- if ! reValidIconName ().MatchString (name ) {
225
- // skip this
226
- return ast .WalkContinue , nil
227
- }
228
-
229
- // FIXME: the "icon xxx" is from Fomantic UI, it's really questionable whether it still works correctly
230
- err := r .renderInternal .FormatWithSafeAttrs (w , `<i class="icon %s"></i>` , name )
206
+ n := node .(* RawHTML )
207
+ _ , err := w .WriteString (string (r .renderInternal .ProtectSafeAttrs (n .rawHTML )))
231
208
if err != nil {
232
209
return ast .WalkStop , err
233
210
}
234
-
235
211
return ast .WalkContinue , nil
236
212
}
0 commit comments