Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
kardolus
GitHub Repository: kardolus/chatgpt-cli
Path: blob/main/vendor/golang.org/x/net/html/foreign.go
2880 views
1
// Copyright 2011 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4
5
package html
6
7
import (
8
"strings"
9
)
10
11
func adjustAttributeNames(aa []Attribute, nameMap map[string]string) {
12
for i := range aa {
13
if newName, ok := nameMap[aa[i].Key]; ok {
14
aa[i].Key = newName
15
}
16
}
17
}
18
19
func adjustForeignAttributes(aa []Attribute) {
20
for i, a := range aa {
21
if a.Key == "" || a.Key[0] != 'x' {
22
continue
23
}
24
switch a.Key {
25
case "xlink:actuate", "xlink:arcrole", "xlink:href", "xlink:role", "xlink:show",
26
"xlink:title", "xlink:type", "xml:base", "xml:lang", "xml:space", "xmlns:xlink":
27
j := strings.Index(a.Key, ":")
28
aa[i].Namespace = a.Key[:j]
29
aa[i].Key = a.Key[j+1:]
30
}
31
}
32
}
33
34
func htmlIntegrationPoint(n *Node) bool {
35
if n.Type != ElementNode {
36
return false
37
}
38
switch n.Namespace {
39
case "math":
40
if n.Data == "annotation-xml" {
41
for _, a := range n.Attr {
42
if a.Key == "encoding" {
43
if strings.EqualFold(a.Val, "text/html") || strings.EqualFold(a.Val, "application/xhtml+xml") {
44
return true
45
}
46
}
47
}
48
}
49
case "svg":
50
switch n.Data {
51
case "desc", "foreignObject", "title":
52
return true
53
}
54
}
55
return false
56
}
57
58
func mathMLTextIntegrationPoint(n *Node) bool {
59
if n.Namespace != "math" {
60
return false
61
}
62
switch n.Data {
63
case "mi", "mo", "mn", "ms", "mtext":
64
return true
65
}
66
return false
67
}
68
69
// Section 12.2.6.5.
70
var breakout = map[string]bool{
71
"b": true,
72
"big": true,
73
"blockquote": true,
74
"body": true,
75
"br": true,
76
"center": true,
77
"code": true,
78
"dd": true,
79
"div": true,
80
"dl": true,
81
"dt": true,
82
"em": true,
83
"embed": true,
84
"h1": true,
85
"h2": true,
86
"h3": true,
87
"h4": true,
88
"h5": true,
89
"h6": true,
90
"head": true,
91
"hr": true,
92
"i": true,
93
"img": true,
94
"li": true,
95
"listing": true,
96
"menu": true,
97
"meta": true,
98
"nobr": true,
99
"ol": true,
100
"p": true,
101
"pre": true,
102
"ruby": true,
103
"s": true,
104
"small": true,
105
"span": true,
106
"strong": true,
107
"strike": true,
108
"sub": true,
109
"sup": true,
110
"table": true,
111
"tt": true,
112
"u": true,
113
"ul": true,
114
"var": true,
115
}
116
117
// Section 12.2.6.5.
118
var svgTagNameAdjustments = map[string]string{
119
"altglyph": "altGlyph",
120
"altglyphdef": "altGlyphDef",
121
"altglyphitem": "altGlyphItem",
122
"animatecolor": "animateColor",
123
"animatemotion": "animateMotion",
124
"animatetransform": "animateTransform",
125
"clippath": "clipPath",
126
"feblend": "feBlend",
127
"fecolormatrix": "feColorMatrix",
128
"fecomponenttransfer": "feComponentTransfer",
129
"fecomposite": "feComposite",
130
"feconvolvematrix": "feConvolveMatrix",
131
"fediffuselighting": "feDiffuseLighting",
132
"fedisplacementmap": "feDisplacementMap",
133
"fedistantlight": "feDistantLight",
134
"feflood": "feFlood",
135
"fefunca": "feFuncA",
136
"fefuncb": "feFuncB",
137
"fefuncg": "feFuncG",
138
"fefuncr": "feFuncR",
139
"fegaussianblur": "feGaussianBlur",
140
"feimage": "feImage",
141
"femerge": "feMerge",
142
"femergenode": "feMergeNode",
143
"femorphology": "feMorphology",
144
"feoffset": "feOffset",
145
"fepointlight": "fePointLight",
146
"fespecularlighting": "feSpecularLighting",
147
"fespotlight": "feSpotLight",
148
"fetile": "feTile",
149
"feturbulence": "feTurbulence",
150
"foreignobject": "foreignObject",
151
"glyphref": "glyphRef",
152
"lineargradient": "linearGradient",
153
"radialgradient": "radialGradient",
154
"textpath": "textPath",
155
}
156
157
// Section 12.2.6.1
158
var mathMLAttributeAdjustments = map[string]string{
159
"definitionurl": "definitionURL",
160
}
161
162
var svgAttributeAdjustments = map[string]string{
163
"attributename": "attributeName",
164
"attributetype": "attributeType",
165
"basefrequency": "baseFrequency",
166
"baseprofile": "baseProfile",
167
"calcmode": "calcMode",
168
"clippathunits": "clipPathUnits",
169
"diffuseconstant": "diffuseConstant",
170
"edgemode": "edgeMode",
171
"filterunits": "filterUnits",
172
"glyphref": "glyphRef",
173
"gradienttransform": "gradientTransform",
174
"gradientunits": "gradientUnits",
175
"kernelmatrix": "kernelMatrix",
176
"kernelunitlength": "kernelUnitLength",
177
"keypoints": "keyPoints",
178
"keysplines": "keySplines",
179
"keytimes": "keyTimes",
180
"lengthadjust": "lengthAdjust",
181
"limitingconeangle": "limitingConeAngle",
182
"markerheight": "markerHeight",
183
"markerunits": "markerUnits",
184
"markerwidth": "markerWidth",
185
"maskcontentunits": "maskContentUnits",
186
"maskunits": "maskUnits",
187
"numoctaves": "numOctaves",
188
"pathlength": "pathLength",
189
"patterncontentunits": "patternContentUnits",
190
"patterntransform": "patternTransform",
191
"patternunits": "patternUnits",
192
"pointsatx": "pointsAtX",
193
"pointsaty": "pointsAtY",
194
"pointsatz": "pointsAtZ",
195
"preservealpha": "preserveAlpha",
196
"preserveaspectratio": "preserveAspectRatio",
197
"primitiveunits": "primitiveUnits",
198
"refx": "refX",
199
"refy": "refY",
200
"repeatcount": "repeatCount",
201
"repeatdur": "repeatDur",
202
"requiredextensions": "requiredExtensions",
203
"requiredfeatures": "requiredFeatures",
204
"specularconstant": "specularConstant",
205
"specularexponent": "specularExponent",
206
"spreadmethod": "spreadMethod",
207
"startoffset": "startOffset",
208
"stddeviation": "stdDeviation",
209
"stitchtiles": "stitchTiles",
210
"surfacescale": "surfaceScale",
211
"systemlanguage": "systemLanguage",
212
"tablevalues": "tableValues",
213
"targetx": "targetX",
214
"targety": "targetY",
215
"textlength": "textLength",
216
"viewbox": "viewBox",
217
"viewtarget": "viewTarget",
218
"xchannelselector": "xChannelSelector",
219
"ychannelselector": "yChannelSelector",
220
"zoomandpan": "zoomAndPan",
221
}
222
223