...

Source file src/golang.org/x/net/html/foreign.go

Documentation: golang.org/x/net/html

     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  

View as plain text