diff options
Diffstat (limited to 'vendor/golang.org/x/net/html/foreign.go')
-rw-r--r-- | vendor/golang.org/x/net/html/foreign.go | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/vendor/golang.org/x/net/html/foreign.go b/vendor/golang.org/x/net/html/foreign.go new file mode 100644 index 0000000..d3b3844 --- /dev/null +++ b/vendor/golang.org/x/net/html/foreign.go | |||
@@ -0,0 +1,226 @@ | |||
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 | val := strings.ToLower(a.Val) | ||
44 | if val == "text/html" || val == "application/xhtml+xml" { | ||
45 | return true | ||
46 | } | ||
47 | } | ||
48 | } | ||
49 | } | ||
50 | case "svg": | ||
51 | switch n.Data { | ||
52 | case "desc", "foreignObject", "title": | ||
53 | return true | ||
54 | } | ||
55 | } | ||
56 | return false | ||
57 | } | ||
58 | |||
59 | func mathMLTextIntegrationPoint(n *Node) bool { | ||
60 | if n.Namespace != "math" { | ||
61 | return false | ||
62 | } | ||
63 | switch n.Data { | ||
64 | case "mi", "mo", "mn", "ms", "mtext": | ||
65 | return true | ||
66 | } | ||
67 | return false | ||
68 | } | ||
69 | |||
70 | // Section 12.2.5.5. | ||
71 | var breakout = map[string]bool{ | ||
72 | "b": true, | ||
73 | "big": true, | ||
74 | "blockquote": true, | ||
75 | "body": true, | ||
76 | "br": true, | ||
77 | "center": true, | ||
78 | "code": true, | ||
79 | "dd": true, | ||
80 | "div": true, | ||
81 | "dl": true, | ||
82 | "dt": true, | ||
83 | "em": true, | ||
84 | "embed": true, | ||
85 | "h1": true, | ||
86 | "h2": true, | ||
87 | "h3": true, | ||
88 | "h4": true, | ||
89 | "h5": true, | ||
90 | "h6": true, | ||
91 | "head": true, | ||
92 | "hr": true, | ||
93 | "i": true, | ||
94 | "img": true, | ||
95 | "li": true, | ||
96 | "listing": true, | ||
97 | "menu": true, | ||
98 | "meta": true, | ||
99 | "nobr": true, | ||
100 | "ol": true, | ||
101 | "p": true, | ||
102 | "pre": true, | ||
103 | "ruby": true, | ||
104 | "s": true, | ||
105 | "small": true, | ||
106 | "span": true, | ||
107 | "strong": true, | ||
108 | "strike": true, | ||
109 | "sub": true, | ||
110 | "sup": true, | ||
111 | "table": true, | ||
112 | "tt": true, | ||
113 | "u": true, | ||
114 | "ul": true, | ||
115 | "var": true, | ||
116 | } | ||
117 | |||
118 | // Section 12.2.5.5. | ||
119 | var svgTagNameAdjustments = map[string]string{ | ||
120 | "altglyph": "altGlyph", | ||
121 | "altglyphdef": "altGlyphDef", | ||
122 | "altglyphitem": "altGlyphItem", | ||
123 | "animatecolor": "animateColor", | ||
124 | "animatemotion": "animateMotion", | ||
125 | "animatetransform": "animateTransform", | ||
126 | "clippath": "clipPath", | ||
127 | "feblend": "feBlend", | ||
128 | "fecolormatrix": "feColorMatrix", | ||
129 | "fecomponenttransfer": "feComponentTransfer", | ||
130 | "fecomposite": "feComposite", | ||
131 | "feconvolvematrix": "feConvolveMatrix", | ||
132 | "fediffuselighting": "feDiffuseLighting", | ||
133 | "fedisplacementmap": "feDisplacementMap", | ||
134 | "fedistantlight": "feDistantLight", | ||
135 | "feflood": "feFlood", | ||
136 | "fefunca": "feFuncA", | ||
137 | "fefuncb": "feFuncB", | ||
138 | "fefuncg": "feFuncG", | ||
139 | "fefuncr": "feFuncR", | ||
140 | "fegaussianblur": "feGaussianBlur", | ||
141 | "feimage": "feImage", | ||
142 | "femerge": "feMerge", | ||
143 | "femergenode": "feMergeNode", | ||
144 | "femorphology": "feMorphology", | ||
145 | "feoffset": "feOffset", | ||
146 | "fepointlight": "fePointLight", | ||
147 | "fespecularlighting": "feSpecularLighting", | ||
148 | "fespotlight": "feSpotLight", | ||
149 | "fetile": "feTile", | ||
150 | "feturbulence": "feTurbulence", | ||
151 | "foreignobject": "foreignObject", | ||
152 | "glyphref": "glyphRef", | ||
153 | "lineargradient": "linearGradient", | ||
154 | "radialgradient": "radialGradient", | ||
155 | "textpath": "textPath", | ||
156 | } | ||
157 | |||
158 | // Section 12.2.5.1 | ||
159 | var mathMLAttributeAdjustments = map[string]string{ | ||
160 | "definitionurl": "definitionURL", | ||
161 | } | ||
162 | |||
163 | var svgAttributeAdjustments = map[string]string{ | ||
164 | "attributename": "attributeName", | ||
165 | "attributetype": "attributeType", | ||
166 | "basefrequency": "baseFrequency", | ||
167 | "baseprofile": "baseProfile", | ||
168 | "calcmode": "calcMode", | ||
169 | "clippathunits": "clipPathUnits", | ||
170 | "contentscripttype": "contentScriptType", | ||
171 | "contentstyletype": "contentStyleType", | ||
172 | "diffuseconstant": "diffuseConstant", | ||
173 | "edgemode": "edgeMode", | ||
174 | "externalresourcesrequired": "externalResourcesRequired", | ||
175 | "filterres": "filterRes", | ||
176 | "filterunits": "filterUnits", | ||
177 | "glyphref": "glyphRef", | ||
178 | "gradienttransform": "gradientTransform", | ||
179 | "gradientunits": "gradientUnits", | ||
180 | "kernelmatrix": "kernelMatrix", | ||
181 | "kernelunitlength": "kernelUnitLength", | ||
182 | "keypoints": "keyPoints", | ||
183 | "keysplines": "keySplines", | ||
184 | "keytimes": "keyTimes", | ||
185 | "lengthadjust": "lengthAdjust", | ||
186 | "limitingconeangle": "limitingConeAngle", | ||
187 | "markerheight": "markerHeight", | ||
188 | "markerunits": "markerUnits", | ||
189 | "markerwidth": "markerWidth", | ||
190 | "maskcontentunits": "maskContentUnits", | ||
191 | "maskunits": "maskUnits", | ||
192 | "numoctaves": "numOctaves", | ||
193 | "pathlength": "pathLength", | ||
194 | "patterncontentunits": "patternContentUnits", | ||
195 | "patterntransform": "patternTransform", | ||
196 | "patternunits": "patternUnits", | ||
197 | "pointsatx": "pointsAtX", | ||
198 | "pointsaty": "pointsAtY", | ||
199 | "pointsatz": "pointsAtZ", | ||
200 | "preservealpha": "preserveAlpha", | ||
201 | "preserveaspectratio": "preserveAspectRatio", | ||
202 | "primitiveunits": "primitiveUnits", | ||
203 | "refx": "refX", | ||
204 | "refy": "refY", | ||
205 | "repeatcount": "repeatCount", | ||
206 | "repeatdur": "repeatDur", | ||
207 | "requiredextensions": "requiredExtensions", | ||
208 | "requiredfeatures": "requiredFeatures", | ||
209 | "specularconstant": "specularConstant", | ||
210 | "specularexponent": "specularExponent", | ||
211 | "spreadmethod": "spreadMethod", | ||
212 | "startoffset": "startOffset", | ||
213 | "stddeviation": "stdDeviation", | ||
214 | "stitchtiles": "stitchTiles", | ||
215 | "surfacescale": "surfaceScale", | ||
216 | "systemlanguage": "systemLanguage", | ||
217 | "tablevalues": "tableValues", | ||
218 | "targetx": "targetX", | ||
219 | "targety": "targetY", | ||
220 | "textlength": "textLength", | ||
221 | "viewbox": "viewBox", | ||
222 | "viewtarget": "viewTarget", | ||
223 | "xchannelselector": "xChannelSelector", | ||
224 | "ychannelselector": "yChannelSelector", | ||
225 | "zoomandpan": "zoomAndPan", | ||
226 | } | ||