all repos

rss-tools @ a5ac527

get rss feed from sources that(i need and) dont provide one

rss-tools/vendor/golang.org/x/net/html/foreign.go (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
we're vendoring now, 7 days ago
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
}