github.com/sagernet/sing@v0.4.0-beta.19.0.20240518125136-f67a0988a636/common/json/internal/contextjson/tables.go (about) 1 // Copyright 2016 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package json 6 7 import "unicode/utf8" 8 9 // safeSet holds the value true if the ASCII character with the given array 10 // position can be represented inside a JSON string without any further 11 // escaping. 12 // 13 // All values are true except for the ASCII control characters (0-31), the 14 // double quote ("), and the backslash character ("\"). 15 var safeSet = [utf8.RuneSelf]bool{ 16 ' ': true, 17 '!': true, 18 '"': false, 19 '#': true, 20 '$': true, 21 '%': true, 22 '&': true, 23 '\'': true, 24 '(': true, 25 ')': true, 26 '*': true, 27 '+': true, 28 ',': true, 29 '-': true, 30 '.': true, 31 '/': true, 32 '0': true, 33 '1': true, 34 '2': true, 35 '3': true, 36 '4': true, 37 '5': true, 38 '6': true, 39 '7': true, 40 '8': true, 41 '9': true, 42 ':': true, 43 ';': true, 44 '<': true, 45 '=': true, 46 '>': true, 47 '?': true, 48 '@': true, 49 'A': true, 50 'B': true, 51 'C': true, 52 'D': true, 53 'E': true, 54 'F': true, 55 'G': true, 56 'H': true, 57 'I': true, 58 'J': true, 59 'K': true, 60 'L': true, 61 'M': true, 62 'N': true, 63 'O': true, 64 'P': true, 65 'Q': true, 66 'R': true, 67 'S': true, 68 'T': true, 69 'U': true, 70 'V': true, 71 'W': true, 72 'X': true, 73 'Y': true, 74 'Z': true, 75 '[': true, 76 '\\': false, 77 ']': true, 78 '^': true, 79 '_': true, 80 '`': true, 81 'a': true, 82 'b': true, 83 'c': true, 84 'd': true, 85 'e': true, 86 'f': true, 87 'g': true, 88 'h': true, 89 'i': true, 90 'j': true, 91 'k': true, 92 'l': true, 93 'm': true, 94 'n': true, 95 'o': true, 96 'p': true, 97 'q': true, 98 'r': true, 99 's': true, 100 't': true, 101 'u': true, 102 'v': true, 103 'w': true, 104 'x': true, 105 'y': true, 106 'z': true, 107 '{': true, 108 '|': true, 109 '}': true, 110 '~': true, 111 '\u007f': true, 112 } 113 114 // htmlSafeSet holds the value true if the ASCII character with the given 115 // array position can be safely represented inside a JSON string, embedded 116 // inside of HTML <script> tags, without any additional escaping. 117 // 118 // All values are true except for the ASCII control characters (0-31), the 119 // double quote ("), the backslash character ("\"), HTML opening and closing 120 // tags ("<" and ">"), and the ampersand ("&"). 121 var htmlSafeSet = [utf8.RuneSelf]bool{ 122 ' ': true, 123 '!': true, 124 '"': false, 125 '#': true, 126 '$': true, 127 '%': true, 128 '&': false, 129 '\'': true, 130 '(': true, 131 ')': true, 132 '*': true, 133 '+': true, 134 ',': true, 135 '-': true, 136 '.': true, 137 '/': true, 138 '0': true, 139 '1': true, 140 '2': true, 141 '3': true, 142 '4': true, 143 '5': true, 144 '6': true, 145 '7': true, 146 '8': true, 147 '9': true, 148 ':': true, 149 ';': true, 150 '<': false, 151 '=': true, 152 '>': false, 153 '?': true, 154 '@': true, 155 'A': true, 156 'B': true, 157 'C': true, 158 'D': true, 159 'E': true, 160 'F': true, 161 'G': true, 162 'H': true, 163 'I': true, 164 'J': true, 165 'K': true, 166 'L': true, 167 'M': true, 168 'N': true, 169 'O': true, 170 'P': true, 171 'Q': true, 172 'R': true, 173 'S': true, 174 'T': true, 175 'U': true, 176 'V': true, 177 'W': true, 178 'X': true, 179 'Y': true, 180 'Z': true, 181 '[': true, 182 '\\': false, 183 ']': true, 184 '^': true, 185 '_': true, 186 '`': true, 187 'a': true, 188 'b': true, 189 'c': true, 190 'd': true, 191 'e': true, 192 'f': true, 193 'g': true, 194 'h': true, 195 'i': true, 196 'j': true, 197 'k': true, 198 'l': true, 199 'm': true, 200 'n': true, 201 'o': true, 202 'p': true, 203 'q': true, 204 'r': true, 205 's': true, 206 't': true, 207 'u': true, 208 'v': true, 209 'w': true, 210 'x': true, 211 'y': true, 212 'z': true, 213 '{': true, 214 '|': true, 215 '}': true, 216 '~': true, 217 '\u007f': true, 218 }