@@ -111,7 +111,7 @@ func Sanitize(baseURL, input string) string {
111
111
continue
112
112
}
113
113
114
- buffer .WriteString (html . EscapeString ( token .Data ))
114
+ buffer .WriteString (token .String ( ))
115
115
case html .StartTagToken :
116
116
parentTag = tagName
117
117
@@ -121,36 +121,42 @@ func Sanitize(baseURL, input string) string {
121
121
122
122
if isBlockedTag (tagName ) || slices .ContainsFunc (token .Attr , func (attr html.Attribute ) bool { return attr .Key == "hidden" }) {
123
123
blockedStack = append (blockedStack , tagName )
124
- } else if len ( blockedStack ) == 0 && isValidTag ( tagName ) {
125
- attrNames , htmlAttributes := sanitizeAttributes ( baseURL , tagName , token . Attr )
124
+ continue
125
+ }
126
126
127
+ if len (blockedStack ) == 0 && isValidTag (tagName ) {
128
+ attrNames , htmlAttributes := sanitizeAttributes (baseURL , tagName , token .Attr )
127
129
if hasRequiredAttributes (tagName , attrNames ) {
128
130
if len (attrNames ) > 0 {
129
131
buffer .WriteString ("<" + tagName + " " + htmlAttributes + ">" )
130
132
} else {
131
- buffer .WriteString ("<" + tagName + ">" )
133
+ buffer .WriteString (token . String () )
132
134
}
133
135
134
136
tagStack = append (tagStack , tagName )
135
137
}
136
138
}
137
139
case html .EndTagToken :
138
- if len (blockedStack ) > 0 && blockedStack [len (blockedStack )- 1 ] == tagName {
139
- blockedStack = blockedStack [:len (blockedStack )- 1 ]
140
- } else if len (blockedStack ) == 0 && isValidTag (tagName ) && slices .Contains (tagStack , tagName ) {
141
- buffer .WriteString ("</" + tagName + ">" )
140
+ if len (blockedStack ) == 0 {
141
+ if isValidTag (tagName ) && slices .Contains (tagStack , tagName ) {
142
+ buffer .WriteString (token .String ())
143
+ }
144
+ } else {
145
+ if blockedStack [len (blockedStack )- 1 ] == tagName {
146
+ blockedStack = blockedStack [:len (blockedStack )- 1 ]
147
+ }
142
148
}
143
149
case html .SelfClosingTagToken :
144
150
if isPixelTracker (tagName , token .Attr ) {
145
151
continue
146
152
}
147
- if isValidTag ( tagName ) && len (blockedStack ) == 0 {
153
+ if len (blockedStack ) == 0 && isValidTag ( tagName ) {
148
154
attrNames , htmlAttributes := sanitizeAttributes (baseURL , tagName , token .Attr )
149
155
if hasRequiredAttributes (tagName , attrNames ) {
150
156
if len (attrNames ) > 0 {
151
157
buffer .WriteString ("<" + tagName + " " + htmlAttributes + "/>" )
152
158
} else {
153
- buffer .WriteString ("<" + tagName + "/>" )
159
+ buffer .WriteString (token . String () )
154
160
}
155
161
}
156
162
}
0 commit comments