Skip to content

Commit 152cd1c

Browse files
authored
toml: simplify decode_quoted_escapes (#21472)
1 parent 328e53b commit 152cd1c

1 file changed

Lines changed: 33 additions & 48 deletions

File tree

vlib/toml/decoder/decoder.v

Lines changed: 33 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,8 @@ pub fn decode_quoted_escapes(mut q ast.Quoted) ! {
8686
mut s := scanner.new_simple_text(q.text)!
8787
q.text = q.text.replace('\\"', '"')
8888

89-
for {
90-
ch := s.next()
91-
if ch == scanner.end_of_text {
92-
break
93-
}
89+
for ch := s.next(); ch != scanner.end_of_text; ch = s.next() {
9490
ch_byte := u8(ch)
95-
9691
if eat_whitespace && ch_byte.is_space() {
9792
continue
9893
}
@@ -102,53 +97,44 @@ pub fn decode_quoted_escapes(mut q ast.Quoted) ! {
10297
ch_next := s.at()
10398
ch_next_byte := u8(ch_next)
10499

105-
if ch_next == `\\` {
106-
decoded_s += ch_next_byte.ascii_str()
107-
s.next()
108-
continue
109-
}
110-
111100
if q.is_multiline {
112101
if ch_next_byte.is_space() {
113102
eat_whitespace = true
114103
continue
115104
}
116105
}
117-
118-
if ch_next == `"` {
119-
decoded_s += '"'
120-
s.next()
121-
continue
122-
}
123-
124-
if ch_next == `n` {
125-
decoded_s += '\n'
126-
s.next()
127-
continue
128-
}
129-
130-
if ch_next == `t` {
131-
decoded_s += '\t'
132-
s.next()
133-
continue
134-
}
135-
136-
if ch_next == `b` {
137-
decoded_s += '\b'
138-
s.next()
139-
continue
140-
}
141-
142-
if ch_next == `r` {
143-
decoded_s += '\r'
144-
s.next()
145-
continue
146-
}
147-
148-
if ch_next == `f` {
149-
decoded_s += '\f'
150-
s.next()
151-
continue
106+
match rune(ch_next) {
107+
`\\`, `"` {
108+
decoded_s += ch_next_byte.ascii_str()
109+
s.next()
110+
continue
111+
}
112+
`n` {
113+
decoded_s += '\n'
114+
s.next()
115+
continue
116+
}
117+
`t` {
118+
decoded_s += '\t'
119+
s.next()
120+
continue
121+
}
122+
`b` {
123+
decoded_s += '\b'
124+
s.next()
125+
continue
126+
}
127+
`r` {
128+
decoded_s += '\r'
129+
s.next()
130+
continue
131+
}
132+
`f` {
133+
decoded_s += '\f'
134+
s.next()
135+
continue
136+
}
137+
else {}
152138
}
153139

154140
escape := ch_byte.ascii_str() + ch_next_byte.ascii_str()
@@ -171,7 +157,6 @@ pub fn decode_quoted_escapes(mut q ast.Quoted) ! {
171157
if slen <= s.remaining() {
172158
pos := s.state().pos
173159
sequence := s.text[pos..pos + slen + 1]
174-
175160
decoded, unicode_val, sequence_length = decode_unicode_escape(sequence) or {
176161
decoded_s += escape
177162
continue

0 commit comments

Comments
 (0)