| // 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. | |
| //go:build !goexperiment.jsonv2 | |
| 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, | |
| } | |