summaryrefslogtreecommitdiffstats
path: root/vendor/golang.org/x/net/html/atom/gen.go
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2017-09-29 12:46:30 -0700
committerGitHub <noreply@github.com>2017-09-29 12:46:30 -0700
commitb84736e9b6401df0c6eeab9950bef09458a6aefd (patch)
treed9175208de3236db75a33879750a57b3000ba096 /vendor/golang.org/x/net/html/atom/gen.go
parent8b9dbb86133ff0fd6002a391268383d1593918ca (diff)
downloadchat-b84736e9b6401df0c6eeab9950bef09458a6aefd.tar.gz
chat-b84736e9b6401df0c6eeab9950bef09458a6aefd.tar.bz2
chat-b84736e9b6401df0c6eeab9950bef09458a6aefd.zip
Updating server dependancies. (#7538)
Diffstat (limited to 'vendor/golang.org/x/net/html/atom/gen.go')
-rw-r--r--vendor/golang.org/x/net/html/atom/gen.go135
1 files changed, 98 insertions, 37 deletions
diff --git a/vendor/golang.org/x/net/html/atom/gen.go b/vendor/golang.org/x/net/html/atom/gen.go
index 6bfa86601..cc5dc5dbc 100644
--- a/vendor/golang.org/x/net/html/atom/gen.go
+++ b/vendor/golang.org/x/net/html/atom/gen.go
@@ -4,17 +4,17 @@
// +build ignore
-package main
+//go:generate go run gen.go
+//go:generate go run gen.go -test
-// This program generates table.go and table_test.go.
-// Invoke as
-//
-// go run gen.go |gofmt >table.go
-// go run gen.go -test |gofmt >table_test.go
+package main
import (
+ "bytes"
"flag"
"fmt"
+ "go/format"
+ "io/ioutil"
"math/rand"
"os"
"sort"
@@ -42,6 +42,18 @@ func identifier(s string) string {
var test = flag.Bool("test", false, "generate table_test.go")
+func genFile(name string, buf *bytes.Buffer) {
+ b, err := format.Source(buf.Bytes())
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err)
+ os.Exit(1)
+ }
+ if err := ioutil.WriteFile(name, b, 0644); err != nil {
+ fmt.Fprintln(os.Stderr, err)
+ os.Exit(1)
+ }
+}
+
func main() {
flag.Parse()
@@ -52,32 +64,31 @@ func main() {
all = append(all, extra...)
sort.Strings(all)
- if *test {
- fmt.Printf("// generated by go run gen.go -test; DO NOT EDIT\n\n")
- fmt.Printf("package atom\n\n")
- fmt.Printf("var testAtomList = []string{\n")
- for _, s := range all {
- fmt.Printf("\t%q,\n", s)
- }
- fmt.Printf("}\n")
- return
- }
-
// uniq - lists have dups
- // compute max len too
- maxLen := 0
w := 0
for _, s := range all {
if w == 0 || all[w-1] != s {
- if maxLen < len(s) {
- maxLen = len(s)
- }
all[w] = s
w++
}
}
all = all[:w]
+ if *test {
+ var buf bytes.Buffer
+ fmt.Fprintln(&buf, "// Code generated by go generate gen.go; DO NOT EDIT.\n")
+ fmt.Fprintln(&buf, "//go:generate go run gen.go -test\n")
+ fmt.Fprintln(&buf, "package atom\n")
+ fmt.Fprintln(&buf, "var testAtomList = []string{")
+ for _, s := range all {
+ fmt.Fprintf(&buf, "\t%q,\n", s)
+ }
+ fmt.Fprintln(&buf, "}")
+
+ genFile("table_test.go", &buf)
+ return
+ }
+
// Find hash that minimizes table size.
var best *table
for i := 0; i < 1000000; i++ {
@@ -163,36 +174,46 @@ func main() {
atom[s] = uint32(off<<8 | len(s))
}
+ var buf bytes.Buffer
// Generate the Go code.
- fmt.Printf("// generated by go run gen.go; DO NOT EDIT\n\n")
- fmt.Printf("package atom\n\nconst (\n")
+ fmt.Fprintln(&buf, "// Code generated by go generate gen.go; DO NOT EDIT.\n")
+ fmt.Fprintln(&buf, "//go:generate go run gen.go\n")
+ fmt.Fprintln(&buf, "package atom\n\nconst (")
+
+ // compute max len
+ maxLen := 0
for _, s := range all {
- fmt.Printf("\t%s Atom = %#x\n", identifier(s), atom[s])
+ if maxLen < len(s) {
+ maxLen = len(s)
+ }
+ fmt.Fprintf(&buf, "\t%s Atom = %#x\n", identifier(s), atom[s])
}
- fmt.Printf(")\n\n")
+ fmt.Fprintln(&buf, ")\n")
- fmt.Printf("const hash0 = %#x\n\n", best.h0)
- fmt.Printf("const maxAtomLen = %d\n\n", maxLen)
+ fmt.Fprintf(&buf, "const hash0 = %#x\n\n", best.h0)
+ fmt.Fprintf(&buf, "const maxAtomLen = %d\n\n", maxLen)
- fmt.Printf("var table = [1<<%d]Atom{\n", best.k)
+ fmt.Fprintf(&buf, "var table = [1<<%d]Atom{\n", best.k)
for i, s := range best.tab {
if s == "" {
continue
}
- fmt.Printf("\t%#x: %#x, // %s\n", i, atom[s], s)
+ fmt.Fprintf(&buf, "\t%#x: %#x, // %s\n", i, atom[s], s)
}
- fmt.Printf("}\n")
+ fmt.Fprintf(&buf, "}\n")
datasize := (1 << best.k) * 4
- fmt.Printf("const atomText =\n")
+ fmt.Fprintln(&buf, "const atomText =")
textsize := len(text)
for len(text) > 60 {
- fmt.Printf("\t%q +\n", text[:60])
+ fmt.Fprintf(&buf, "\t%q +\n", text[:60])
text = text[60:]
}
- fmt.Printf("\t%q\n\n", text)
+ fmt.Fprintf(&buf, "\t%q\n\n", text)
+
+ genFile("table.go", &buf)
- fmt.Fprintf(os.Stderr, "%d atoms; %d string bytes + %d tables = %d total data\n", len(all), textsize, datasize, textsize+datasize)
+ fmt.Fprintf(os.Stdout, "%d atoms; %d string bytes + %d tables = %d total data\n", len(all), textsize, datasize, textsize+datasize)
}
type byLen []string
@@ -285,8 +306,10 @@ func (t *table) push(i uint32, depth int) bool {
// The lists of element names and attribute keys were taken from
// https://html.spec.whatwg.org/multipage/indices.html#index
-// as of the "HTML Living Standard - Last Updated 21 February 2015" version.
+// as of the "HTML Living Standard - Last Updated 18 September 2017" version.
+// "command", "keygen" and "menuitem" have been removed from the spec,
+// but are kept here for backwards compatibility.
var elements = []string{
"a",
"abbr",
@@ -349,6 +372,7 @@ var elements = []string{
"legend",
"li",
"link",
+ "main",
"map",
"mark",
"menu",
@@ -364,6 +388,7 @@ var elements = []string{
"output",
"p",
"param",
+ "picture",
"pre",
"progress",
"q",
@@ -375,6 +400,7 @@ var elements = []string{
"script",
"section",
"select",
+ "slot",
"small",
"source",
"span",
@@ -403,14 +429,21 @@ var elements = []string{
}
// https://html.spec.whatwg.org/multipage/indices.html#attributes-3
-
+//
+// "challenge", "command", "contextmenu", "dropzone", "icon", "keytype", "mediagroup",
+// "radiogroup", "spellcheck", "scoped", "seamless", "sortable" and "sorted" have been removed from the spec,
+// but are kept here for backwards compatibility.
var attributes = []string{
"abbr",
"accept",
"accept-charset",
"accesskey",
"action",
+ "allowfullscreen",
+ "allowpaymentrequest",
+ "allowusermedia",
"alt",
+ "as",
"async",
"autocomplete",
"autofocus",
@@ -420,6 +453,7 @@ var attributes = []string{
"checked",
"cite",
"class",
+ "color",
"cols",
"colspan",
"command",
@@ -457,6 +491,8 @@ var attributes = []string{
"icon",
"id",
"inputmode",
+ "integrity",
+ "is",
"ismap",
"itemid",
"itemprop",
@@ -481,16 +517,20 @@ var attributes = []string{
"multiple",
"muted",
"name",
+ "nomodule",
+ "nonce",
"novalidate",
"open",
"optimum",
"pattern",
"ping",
"placeholder",
+ "playsinline",
"poster",
"preload",
"radiogroup",
"readonly",
+ "referrerpolicy",
"rel",
"required",
"reversed",
@@ -507,10 +547,13 @@ var attributes = []string{
"sizes",
"sortable",
"sorted",
+ "slot",
"span",
+ "spellcheck",
"src",
"srcdoc",
"srclang",
+ "srcset",
"start",
"step",
"style",
@@ -520,16 +563,22 @@ var attributes = []string{
"translate",
"type",
"typemustmatch",
+ "updateviacache",
"usemap",
"value",
"width",
+ "workertype",
"wrap",
}
+// "onautocomplete", "onautocompleteerror", "onmousewheel",
+// "onshow" and "onsort" have been removed from the spec,
+// but are kept here for backwards compatibility.
var eventHandlers = []string{
"onabort",
"onautocomplete",
"onautocompleteerror",
+ "onauxclick",
"onafterprint",
"onbeforeprint",
"onbeforeunload",
@@ -541,11 +590,14 @@ var eventHandlers = []string{
"onclick",
"onclose",
"oncontextmenu",
+ "oncopy",
"oncuechange",
+ "oncut",
"ondblclick",
"ondrag",
"ondragend",
"ondragenter",
+ "ondragexit",
"ondragleave",
"ondragover",
"ondragstart",
@@ -565,18 +617,24 @@ var eventHandlers = []string{
"onload",
"onloadeddata",
"onloadedmetadata",
+ "onloadend",
"onloadstart",
"onmessage",
+ "onmessageerror",
"onmousedown",
+ "onmouseenter",
+ "onmouseleave",
"onmousemove",
"onmouseout",
"onmouseover",
"onmouseup",
"onmousewheel",
+ "onwheel",
"onoffline",
"ononline",
"onpagehide",
"onpageshow",
+ "onpaste",
"onpause",
"onplay",
"onplaying",
@@ -585,7 +643,9 @@ var eventHandlers = []string{
"onratechange",
"onreset",
"onresize",
+ "onrejectionhandled",
"onscroll",
+ "onsecuritypolicyviolation",
"onseeked",
"onseeking",
"onselect",
@@ -597,6 +657,7 @@ var eventHandlers = []string{
"onsuspend",
"ontimeupdate",
"ontoggle",
+ "onunhandledrejection",
"onunload",
"onvolumechange",
"onwaiting",