MCPcopy Create free account
hub / github.com/francoispqt/gojay / parseEscapedString

Method parseEscapedString

decode_string.go:94–140  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

92}
93
94func (dec *Decoder) parseEscapedString() error {
95 if dec.cursor >= dec.length && !dec.read() {
96 return dec.raiseInvalidJSONErr(dec.cursor)
97 }
98 switch dec.data[dec.cursor] {
99 case '"':
100 dec.data[dec.cursor] = '"'
101 case '\\':
102 dec.data[dec.cursor] = '\\'
103 case '/':
104 dec.data[dec.cursor] = '/'
105 case 'b':
106 dec.data[dec.cursor] = '\b'
107 case 'f':
108 dec.data[dec.cursor] = '\f'
109 case 'n':
110 dec.data[dec.cursor] = '\n'
111 case 'r':
112 dec.data[dec.cursor] = '\r'
113 case 't':
114 dec.data[dec.cursor] = '\t'
115 case 'u':
116 start := dec.cursor
117 dec.cursor++
118 str, err := dec.parseUnicode()
119 if err != nil {
120 return err
121 }
122 diff := dec.cursor - start
123 dec.data = append(append(dec.data[:start-1], str...), dec.data[dec.cursor:]...)
124 dec.length = len(dec.data)
125 dec.cursor += len(str) - diff - 1
126
127 return nil
128 default:
129 return dec.raiseInvalidJSONErr(dec.cursor)
130 }
131
132 dec.data = append(dec.data[:dec.cursor-1], dec.data[dec.cursor:]...)
133 dec.length--
134
135 // Since we've lost a character, our dec.cursor offset is now
136 // 1 past the escaped character which is precisely where we
137 // want it.
138
139 return nil
140}
141
142func (dec *Decoder) getString() (int, int, error) {
143 // extract key

Callers 1

getStringMethod · 0.95

Calls 3

readMethod · 0.95
raiseInvalidJSONErrMethod · 0.95
parseUnicodeMethod · 0.95

Tested by

no test coverage detected