-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathhtmlesc.go
86 lines (71 loc) · 3.21 KB
/
htmlesc.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// Copyright 2021 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 markdown
import "strings"
// htmlEscaper is a strings.Replacer that escapes text for inclusion in HTML.
// It escapes " & < > only. In particular it does not escape ' so any generated
// HTML should use " for attribute quoting.
var htmlEscaper = strings.NewReplacer(
"\"", """,
"&", "&",
"<", "<",
">", ">",
)
// htmlLinkEscaper is a strings.Replacer that escapes URLs
// for inclusion in an <a href="..."> tag.
var htmlLinkEscaper = strings.NewReplacer(
"\"", "%22",
"&", "&",
"<", "%3C",
">", "%3E",
"\\", "%5C",
" ", "%20",
"`", "%60",
"[", "%5B",
"]", "%5D",
"^", "%5E",
"{", "%7B",
"}", "%7D",
"\x00", "%00", "\x01", "%01", "\x02", "%02", "\x03", "%03",
"\x04", "%04", "\x05", "%05", "\x06", "%06", "\x07", "%07",
"\x08", "%08", "\x0B", "%0B", // not 09 (tab) or 0A (newline)
"\x0C", "%0C", "\x0E", "%0E", "\x0F", "%0F", // not 0D (carriage return)
"\x10", "%10", "\x11", "%11", "\x12", "%12", "\x13", "%13",
"\x14", "%14", "\x15", "%15", "\x16", "%16", "\x17", "%17",
"\x18", "%18", "\x19", "%19", "\x1A", "%1A", "\x1B", "%1B",
"\x1C", "%1C", "\x1D", "%1D", "\x1E", "%1E", "\x1F", "%1F",
"\x7F", "%7F",
"\x80", "%80", "\x81", "%81", "\x82", "%82", "\x83", "%83",
"\x84", "%84", "\x85", "%85", "\x86", "%86", "\x87", "%87",
"\x88", "%88", "\x89", "%89", "\x8A", "%8A", "\x8B", "%8B",
"\x8C", "%8C", "\x8D", "%8D", "\x8E", "%8E", "\x8F", "%8F",
"\x90", "%90", "\x91", "%91", "\x92", "%92", "\x93", "%93",
"\x94", "%94", "\x95", "%95", "\x96", "%96", "\x97", "%97",
"\x98", "%98", "\x99", "%99", "\x9A", "%9A", "\x9B", "%9B",
"\x9C", "%9C", "\x9D", "%9D", "\x9E", "%9E", "\x9F", "%9F",
"\xA0", "%A0", "\xA1", "%A1", "\xA2", "%A2", "\xA3", "%A3",
"\xA4", "%A4", "\xA5", "%A5", "\xA6", "%A6", "\xA7", "%A7",
"\xA8", "%A8", "\xA9", "%A9", "\xAA", "%AA", "\xAB", "%AB",
"\xAC", "%AC", "\xAD", "%AD", "\xAE", "%AE", "\xAF", "%AF",
"\xB0", "%B0", "\xB1", "%B1", "\xB2", "%B2", "\xB3", "%B3",
"\xB4", "%B4", "\xB5", "%B5", "\xB6", "%B6", "\xB7", "%B7",
"\xB8", "%B8", "\xB9", "%B9", "\xBA", "%BA", "\xBB", "%BB",
"\xBC", "%BC", "\xBD", "%BD", "\xBE", "%BE", "\xBF", "%BF",
"\xC0", "%C0", "\xC1", "%C1", "\xC2", "%C2", "\xC3", "%C3",
"\xC4", "%C4", "\xC5", "%C5", "\xC6", "%C6", "\xC7", "%C7",
"\xC8", "%C8", "\xC9", "%C9", "\xCA", "%CA", "\xCB", "%CB",
"\xCC", "%CC", "\xCD", "%CD", "\xCE", "%CE", "\xCF", "%CF",
"\xD0", "%D0", "\xD1", "%D1", "\xD2", "%D2", "\xD3", "%D3",
"\xD4", "%D4", "\xD5", "%D5", "\xD6", "%D6", "\xD7", "%D7",
"\xD8", "%D8", "\xD9", "%D9", "\xDA", "%DA", "\xDB", "%DB",
"\xDC", "%DC", "\xDD", "%DD", "\xDE", "%DE", "\xDF", "%DF",
"\xE0", "%E0", "\xE1", "%E1", "\xE2", "%E2", "\xE3", "%E3",
"\xE4", "%E4", "\xE5", "%E5", "\xE6", "%E6", "\xE7", "%E7",
"\xE8", "%E8", "\xE9", "%E9", "\xEA", "%EA", "\xEB", "%EB",
"\xEC", "%EC", "\xED", "%ED", "\xEE", "%EE", "\xEF", "%EF",
"\xF0", "%F0", "\xF1", "%F1", "\xF2", "%F2", "\xF3", "%F3",
"\xF4", "%F4", "\xF5", "%F5", "\xF6", "%F6", "\xF7", "%F7",
"\xF8", "%F8", "\xF9", "%F9", "\xFA", "%FA", "\xFB", "%FB",
"\xFC", "%FC", "\xFD", "%FD", "\xFE", "%FE", "\xFF", "%FF",
)