You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			112 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
			
		
		
	
	
			112 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
// Copyright 2011 The Go Authors. All rights reserved.
 | 
						|
// Use of this source code is governed by a BSD-style
 | 
						|
// license that can be found in the LICENSE file.
 | 
						|
 | 
						|
package html
 | 
						|
 | 
						|
// Section 12.2.4.2 of the HTML5 specification says "The following elements
 | 
						|
// have varying levels of special parsing rules".
 | 
						|
// https://html.spec.whatwg.org/multipage/syntax.html#the-stack-of-open-elements
 | 
						|
var isSpecialElementMap = map[string]bool{
 | 
						|
	"address":    true,
 | 
						|
	"applet":     true,
 | 
						|
	"area":       true,
 | 
						|
	"article":    true,
 | 
						|
	"aside":      true,
 | 
						|
	"base":       true,
 | 
						|
	"basefont":   true,
 | 
						|
	"bgsound":    true,
 | 
						|
	"blockquote": true,
 | 
						|
	"body":       true,
 | 
						|
	"br":         true,
 | 
						|
	"button":     true,
 | 
						|
	"caption":    true,
 | 
						|
	"center":     true,
 | 
						|
	"col":        true,
 | 
						|
	"colgroup":   true,
 | 
						|
	"dd":         true,
 | 
						|
	"details":    true,
 | 
						|
	"dir":        true,
 | 
						|
	"div":        true,
 | 
						|
	"dl":         true,
 | 
						|
	"dt":         true,
 | 
						|
	"embed":      true,
 | 
						|
	"fieldset":   true,
 | 
						|
	"figcaption": true,
 | 
						|
	"figure":     true,
 | 
						|
	"footer":     true,
 | 
						|
	"form":       true,
 | 
						|
	"frame":      true,
 | 
						|
	"frameset":   true,
 | 
						|
	"h1":         true,
 | 
						|
	"h2":         true,
 | 
						|
	"h3":         true,
 | 
						|
	"h4":         true,
 | 
						|
	"h5":         true,
 | 
						|
	"h6":         true,
 | 
						|
	"head":       true,
 | 
						|
	"header":     true,
 | 
						|
	"hgroup":     true,
 | 
						|
	"hr":         true,
 | 
						|
	"html":       true,
 | 
						|
	"iframe":     true,
 | 
						|
	"img":        true,
 | 
						|
	"input":      true,
 | 
						|
	"keygen":     true, // "keygen" has been removed from the spec, but are kept here for backwards compatibility.
 | 
						|
	"li":         true,
 | 
						|
	"link":       true,
 | 
						|
	"listing":    true,
 | 
						|
	"main":       true,
 | 
						|
	"marquee":    true,
 | 
						|
	"menu":       true,
 | 
						|
	"meta":       true,
 | 
						|
	"nav":        true,
 | 
						|
	"noembed":    true,
 | 
						|
	"noframes":   true,
 | 
						|
	"noscript":   true,
 | 
						|
	"object":     true,
 | 
						|
	"ol":         true,
 | 
						|
	"p":          true,
 | 
						|
	"param":      true,
 | 
						|
	"plaintext":  true,
 | 
						|
	"pre":        true,
 | 
						|
	"script":     true,
 | 
						|
	"section":    true,
 | 
						|
	"select":     true,
 | 
						|
	"source":     true,
 | 
						|
	"style":      true,
 | 
						|
	"summary":    true,
 | 
						|
	"table":      true,
 | 
						|
	"tbody":      true,
 | 
						|
	"td":         true,
 | 
						|
	"template":   true,
 | 
						|
	"textarea":   true,
 | 
						|
	"tfoot":      true,
 | 
						|
	"th":         true,
 | 
						|
	"thead":      true,
 | 
						|
	"title":      true,
 | 
						|
	"tr":         true,
 | 
						|
	"track":      true,
 | 
						|
	"ul":         true,
 | 
						|
	"wbr":        true,
 | 
						|
	"xmp":        true,
 | 
						|
}
 | 
						|
 | 
						|
func isSpecialElement(element *Node) bool {
 | 
						|
	switch element.Namespace {
 | 
						|
	case "", "html":
 | 
						|
		return isSpecialElementMap[element.Data]
 | 
						|
	case "math":
 | 
						|
		switch element.Data {
 | 
						|
		case "mi", "mo", "mn", "ms", "mtext", "annotation-xml":
 | 
						|
			return true
 | 
						|
		}
 | 
						|
	case "svg":
 | 
						|
		switch element.Data {
 | 
						|
		case "foreignObject", "desc", "title":
 | 
						|
			return true
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return false
 | 
						|
}
 |