Home | History | Annotate | Download | only in json
      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 }
    219