// Copyright 2016 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 json | |
import "unicode/utf8" | |
// safeSet holds the value true if the ASCII character with the given array | |
// position can be represented inside a JSON string without any further | |
// escaping. | |
// | |
// All values are true except for the ASCII control characters (0-31), the | |
// double quote ("), and the backslash character ("\"). | |
var safeSet = [utf8.RuneSelf]bool{ | |
' ': true, | |
'!': true, | |
'"': false, | |
'#': true, | |
'$': true, | |
'%': true, | |
'&': true, | |
'\'': true, | |
'(': true, | |
')': true, | |
'*': true, | |
'+': true, | |
',': true, | |
'-': true, | |
'.': true, | |
'/': true, | |
'0': true, | |
'1': true, | |
'2': true, | |
'3': true, | |
'4': true, | |
'5': true, | |
'6': true, | |
'7': true, | |
'8': true, | |
'9': true, | |
':': true, | |
';': true, | |
'<': true, | |
'=': true, | |
'>': true, | |
'?': true, | |
'@': true, | |
'A': true, | |
'B': true, | |
'C': true, | |
'D': true, | |
'E': true, | |
'F': true, | |
'G': true, | |
'H': true, | |
'I': true, | |
'J': true, | |
'K': true, | |
'L': true, | |
'M': true, | |
'N': true, | |
'O': true, | |
'P': true, | |
'Q': true, | |
'R': true, | |
'S': true, | |
'T': true, | |
'U': true, | |
'V': true, | |
'W': true, | |
'X': true, | |
'Y': true, | |
'Z': true, | |
'[': true, | |
'\\': false, | |
']': true, | |
'^': true, | |
'_': true, | |
'`': true, | |
'a': true, | |
'b': true, | |
'c': true, | |
'd': true, | |
'e': true, | |
'f': true, | |
'g': true, | |
'h': true, | |
'i': true, | |
'j': true, | |
'k': true, | |
'l': true, | |
'm': true, | |
'n': true, | |
'o': true, | |
'p': true, | |
'q': true, | |
'r': true, | |
's': true, | |
't': true, | |
'u': true, | |
'v': true, | |
'w': true, | |
'x': true, | |
'y': true, | |
'z': true, | |
'{': true, | |
'|': true, | |
'}': true, | |
'~': true, | |
'\u007f': true, | |
} | |
// htmlSafeSet holds the value true if the ASCII character with the given | |
// array position can be safely represented inside a JSON string, embedded | |
// inside of HTML <script> tags, without any additional escaping. | |
// | |
// All values are true except for the ASCII control characters (0-31), the | |
// double quote ("), the backslash character ("\"), HTML opening and closing | |
// tags ("<" and ">"), and the ampersand ("&"). | |
var htmlSafeSet = [utf8.RuneSelf]bool{ | |
' ': true, | |
'!': true, | |
'"': false, | |
'#': true, | |
'$': true, | |
'%': true, | |
'&': false, | |
'\'': true, | |
'(': true, | |
')': true, | |
'*': true, | |
'+': true, | |
',': true, | |
'-': true, | |
'.': true, | |
'/': true, | |
'0': true, | |
'1': true, | |
'2': true, | |
'3': true, | |
'4': true, | |
'5': true, | |
'6': true, | |
'7': true, | |
'8': true, | |
'9': true, | |
':': true, | |
';': true, | |
'<': false, | |
'=': true, | |
'>': false, | |
'?': true, | |
'@': true, | |
'A': true, | |
'B': true, | |
'C': true, | |
'D': true, | |
'E': true, | |
'F': true, | |
'G': true, | |
'H': true, | |
'I': true, | |
'J': true, | |
'K': true, | |
'L': true, | |
'M': true, | |
'N': true, | |
'O': true, | |
'P': true, | |
'Q': true, | |
'R': true, | |
'S': true, | |
'T': true, | |
'U': true, | |
'V': true, | |
'W': true, | |
'X': true, | |
'Y': true, | |
'Z': true, | |
'[': true, | |
'\\': false, | |
']': true, | |
'^': true, | |
'_': true, | |
'`': true, | |
'a': true, | |
'b': true, | |
'c': true, | |
'd': true, | |
'e': true, | |
'f': true, | |
'g': true, | |
'h': true, | |
'i': true, | |
'j': true, | |
'k': true, | |
'l': true, | |
'm': true, | |
'n': true, | |
'o': true, | |
'p': true, | |
'q': true, | |
'r': true, | |
's': true, | |
't': true, | |
'u': true, | |
'v': true, | |
'w': true, | |
'x': true, | |
'y': true, | |
'z': true, | |
'{': true, | |
'|': true, | |
'}': true, | |
'~': true, | |
'\u007f': true, | |
} |