gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

const.go (2604B)


      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 // Section 12.2.4.2 of the HTML5 specification says "The following elements
      8 // have varying levels of special parsing rules".
      9 // https://html.spec.whatwg.org/multipage/syntax.html#the-stack-of-open-elements
     10 var isSpecialElementMap = map[string]bool{
     11 	"address":    true,
     12 	"applet":     true,
     13 	"area":       true,
     14 	"article":    true,
     15 	"aside":      true,
     16 	"base":       true,
     17 	"basefont":   true,
     18 	"bgsound":    true,
     19 	"blockquote": true,
     20 	"body":       true,
     21 	"br":         true,
     22 	"button":     true,
     23 	"caption":    true,
     24 	"center":     true,
     25 	"col":        true,
     26 	"colgroup":   true,
     27 	"dd":         true,
     28 	"details":    true,
     29 	"dir":        true,
     30 	"div":        true,
     31 	"dl":         true,
     32 	"dt":         true,
     33 	"embed":      true,
     34 	"fieldset":   true,
     35 	"figcaption": true,
     36 	"figure":     true,
     37 	"footer":     true,
     38 	"form":       true,
     39 	"frame":      true,
     40 	"frameset":   true,
     41 	"h1":         true,
     42 	"h2":         true,
     43 	"h3":         true,
     44 	"h4":         true,
     45 	"h5":         true,
     46 	"h6":         true,
     47 	"head":       true,
     48 	"header":     true,
     49 	"hgroup":     true,
     50 	"hr":         true,
     51 	"html":       true,
     52 	"iframe":     true,
     53 	"img":        true,
     54 	"input":      true,
     55 	"keygen":     true, // "keygen" has been removed from the spec, but are kept here for backwards compatibility.
     56 	"li":         true,
     57 	"link":       true,
     58 	"listing":    true,
     59 	"main":       true,
     60 	"marquee":    true,
     61 	"menu":       true,
     62 	"meta":       true,
     63 	"nav":        true,
     64 	"noembed":    true,
     65 	"noframes":   true,
     66 	"noscript":   true,
     67 	"object":     true,
     68 	"ol":         true,
     69 	"p":          true,
     70 	"param":      true,
     71 	"plaintext":  true,
     72 	"pre":        true,
     73 	"script":     true,
     74 	"section":    true,
     75 	"select":     true,
     76 	"source":     true,
     77 	"style":      true,
     78 	"summary":    true,
     79 	"table":      true,
     80 	"tbody":      true,
     81 	"td":         true,
     82 	"template":   true,
     83 	"textarea":   true,
     84 	"tfoot":      true,
     85 	"th":         true,
     86 	"thead":      true,
     87 	"title":      true,
     88 	"tr":         true,
     89 	"track":      true,
     90 	"ul":         true,
     91 	"wbr":        true,
     92 	"xmp":        true,
     93 }
     94 
     95 func isSpecialElement(element *Node) bool {
     96 	switch element.Namespace {
     97 	case "", "html":
     98 		return isSpecialElementMap[element.Data]
     99 	case "math":
    100 		switch element.Data {
    101 		case "mi", "mo", "mn", "ms", "mtext", "annotation-xml":
    102 			return true
    103 		}
    104 	case "svg":
    105 		switch element.Data {
    106 		case "foreignObject", "desc", "title":
    107 			return true
    108 		}
    109 	}
    110 	return false
    111 }