@@ -101,37 +101,37 @@ defmodule Jason.Decoder do
101
101
102
102
defp value ( data , original , skip , stack , decode ) do
103
103
bytecase data do
104
- _ in '\s \n \t \r ' , rest ->
104
+ _ in ~c ' \s \n \t \r ' , rest ->
105
105
value ( rest , original , skip + 1 , stack , decode )
106
- _ in '0' , rest ->
106
+ _ in ~c ' 0' , rest ->
107
107
number_zero ( rest , original , skip , stack , decode , 1 )
108
- _ in '123456789' , rest ->
108
+ _ in ~c ' 123456789' , rest ->
109
109
number ( rest , original , skip , stack , decode , 1 )
110
- _ in '-' , rest ->
110
+ _ in ~c ' -' , rest ->
111
111
number_minus ( rest , original , skip , stack , decode )
112
- _ in '"' , rest ->
112
+ _ in ~c ' "' , rest ->
113
113
string ( rest , original , skip + 1 , stack , decode , 0 )
114
- _ in '[' , rest ->
114
+ _ in ~c ' [' , rest ->
115
115
array ( rest , original , skip + 1 , stack , decode )
116
- _ in '{' , rest ->
116
+ _ in ~c ' {' , rest ->
117
117
object ( rest , original , skip + 1 , stack , decode )
118
- _ in ']' , rest ->
118
+ _ in ~c ' ]' , rest ->
119
119
empty_array ( rest , original , skip + 1 , stack , decode )
120
- _ in 't' , rest ->
120
+ _ in ~c ' t' , rest ->
121
121
case rest do
122
122
<< "rue" , rest :: bits >> ->
123
123
continue ( rest , original , skip + 4 , stack , decode , true )
124
124
<< _ :: bits >> ->
125
125
error ( original , skip )
126
126
end
127
- _ in 'f' , rest ->
127
+ _ in ~c ' f' , rest ->
128
128
case rest do
129
129
<< "alse" , rest :: bits >> ->
130
130
continue ( rest , original , skip + 5 , stack , decode , false )
131
131
<< _ :: bits >> ->
132
132
error ( original , skip )
133
133
end
134
- _ in 'n' , rest ->
134
+ _ in ~c ' n' , rest ->
135
135
case rest do
136
136
<< "ull" , rest :: bits >> ->
137
137
continue ( rest , original , skip + 4 , stack , decode , nil )
@@ -149,7 +149,7 @@ defmodule Jason.Decoder do
149
149
number_zero ( rest , original , skip , stack , decode , 2 )
150
150
end
151
151
defp number_minus ( << byte , rest :: bits >> , original , skip , stack , decode )
152
- when byte in '123456789' do
152
+ when byte in ~c ' 123456789' do
153
153
number ( rest , original , skip , stack , decode , 2 )
154
154
end
155
155
defp number_minus ( << _rest :: bits >> , original , skip , _stack , _decode ) do
@@ -164,13 +164,13 @@ defmodule Jason.Decoder do
164
164
end
165
165
166
166
defp number ( << byte , rest :: bits >> , original , skip , stack , decode , len )
167
- when byte in '0123456789' do
167
+ when byte in ~c ' 0123456789' do
168
168
number ( rest , original , skip , stack , decode , len + 1 )
169
169
end
170
170
defp number ( << ?. , rest :: bits >> , original , skip , stack , decode , len ) do
171
171
number_frac ( rest , original , skip , stack , decode , len + 1 )
172
172
end
173
- defp number ( << e , rest :: bits >> , original , skip , stack , decode , len ) when e in 'eE' do
173
+ defp number ( << e , rest :: bits >> , original , skip , stack , decode , len ) when e in ~c ' eE' do
174
174
prefix = binary_part ( original , skip , len )
175
175
number_exp_copy ( rest , original , skip + len + 1 , stack , decode , prefix )
176
176
end
@@ -184,19 +184,19 @@ defmodule Jason.Decoder do
184
184
end
185
185
186
186
defp number_frac ( << byte , rest :: bits >> , original , skip , stack , decode , len )
187
- when byte in '0123456789' do
187
+ when byte in ~c ' 0123456789' do
188
188
number_frac_cont ( rest , original , skip , stack , decode , len + 1 )
189
189
end
190
190
defp number_frac ( << _rest :: bits >> , original , skip , _stack , _decode , len ) do
191
191
error ( original , skip + len )
192
192
end
193
193
194
194
defp number_frac_cont ( << byte , rest :: bits >> , original , skip , stack , decode , len )
195
- when byte in '0123456789' do
195
+ when byte in ~c ' 0123456789' do
196
196
number_frac_cont ( rest , original , skip , stack , decode , len + 1 )
197
197
end
198
198
defp number_frac_cont ( << e , rest :: bits >> , original , skip , stack , decode , len )
199
- when e in 'eE' do
199
+ when e in ~c ' eE' do
200
200
number_exp ( rest , original , skip , stack , decode , len + 1 )
201
201
end
202
202
defp number_frac_cont ( << rest :: bits >> , original , skip , stack , decode , len ) do
@@ -207,27 +207,27 @@ defmodule Jason.Decoder do
207
207
end
208
208
209
209
defp number_exp ( << byte , rest :: bits >> , original , skip , stack , decode , len )
210
- when byte in '0123456789' do
210
+ when byte in ~c ' 0123456789' do
211
211
number_exp_cont ( rest , original , skip , stack , decode , len + 1 )
212
212
end
213
213
defp number_exp ( << byte , rest :: bits >> , original , skip , stack , decode , len )
214
- when byte in '+-' do
214
+ when byte in ~c ' +-' do
215
215
number_exp_sign ( rest , original , skip , stack , decode , len + 1 )
216
216
end
217
217
defp number_exp ( << _rest :: bits >> , original , skip , _stack , _decode , len ) do
218
218
error ( original , skip + len )
219
219
end
220
220
221
221
defp number_exp_sign ( << byte , rest :: bits >> , original , skip , stack , decode , len )
222
- when byte in '0123456789' do
222
+ when byte in ~c ' 0123456789' do
223
223
number_exp_cont ( rest , original , skip , stack , decode , len + 1 )
224
224
end
225
225
defp number_exp_sign ( << _rest :: bits >> , original , skip , _stack , _decode , len ) do
226
226
error ( original , skip + len )
227
227
end
228
228
229
229
defp number_exp_cont ( << byte , rest :: bits >> , original , skip , stack , decode , len )
230
- when byte in '0123456789' do
230
+ when byte in ~c ' 0123456789' do
231
231
number_exp_cont ( rest , original , skip , stack , decode , len + 1 )
232
232
end
233
233
defp number_exp_cont ( << rest :: bits >> , original , skip , stack , decode , len ) do
@@ -238,27 +238,27 @@ defmodule Jason.Decoder do
238
238
end
239
239
240
240
defp number_exp_copy ( << byte , rest :: bits >> , original , skip , stack , decode , prefix )
241
- when byte in '0123456789' do
241
+ when byte in ~c ' 0123456789' do
242
242
number_exp_cont ( rest , original , skip , stack , decode , prefix , 1 )
243
243
end
244
244
defp number_exp_copy ( << byte , rest :: bits >> , original , skip , stack , decode , prefix )
245
- when byte in '+-' do
245
+ when byte in ~c ' +-' do
246
246
number_exp_sign ( rest , original , skip , stack , decode , prefix , 1 )
247
247
end
248
248
defp number_exp_copy ( << _rest :: bits >> , original , skip , _stack , _decode , _prefix ) do
249
249
error ( original , skip )
250
250
end
251
251
252
252
defp number_exp_sign ( << byte , rest :: bits >> , original , skip , stack , decode , prefix , len )
253
- when byte in '0123456789' do
253
+ when byte in ~c ' 0123456789' do
254
254
number_exp_cont ( rest , original , skip , stack , decode , prefix , len + 1 )
255
255
end
256
256
defp number_exp_sign ( << _rest :: bits >> , original , skip , _stack , _decode , _prefix , len ) do
257
257
error ( original , skip + len )
258
258
end
259
259
260
260
defp number_exp_cont ( << byte , rest :: bits >> , original , skip , stack , decode , prefix , len )
261
- when byte in '0123456789' do
261
+ when byte in ~c ' 0123456789' do
262
262
number_exp_cont ( rest , original , skip , stack , decode , prefix , len + 1 )
263
263
end
264
264
defp number_exp_cont ( << rest :: bits >> , original , skip , stack , decode , prefix , len ) do
@@ -276,7 +276,7 @@ defmodule Jason.Decoder do
276
276
defp number_zero ( << ?. , rest :: bits >> , original , skip , stack , decode , len ) do
277
277
number_frac ( rest , original , skip , stack , decode , len + 1 )
278
278
end
279
- defp number_zero ( << e , rest :: bits >> , original , skip , stack , decode , len ) when e in 'eE' do
279
+ defp number_zero ( << e , rest :: bits >> , original , skip , stack , decode , len ) when e in ~c ' eE' do
280
280
number_exp_copy ( rest , original , skip + len + 1 , stack , decode , "0" )
281
281
end
282
282
defp number_zero ( << rest :: bits >> , original , skip , stack , decode , len ) do
@@ -300,13 +300,13 @@ defmodule Jason.Decoder do
300
300
301
301
defp array ( data , original , skip , stack , decode , value ) do
302
302
bytecase data do
303
- _ in '\s \n \t \r ' , rest ->
303
+ _ in ~c ' \s \n \t \r ' , rest ->
304
304
array ( rest , original , skip + 1 , stack , decode , value )
305
- _ in ']' , rest ->
305
+ _ in ~c ' ]' , rest ->
306
306
[ acc | stack ] = stack
307
307
value = :lists . reverse ( acc , [ value ] )
308
308
continue ( rest , original , skip + 1 , stack , decode , value )
309
- _ in ',' , rest ->
309
+ _ in ~c ' ,' , rest ->
310
310
[ acc | stack ] = stack
311
311
value ( rest , original , skip + 1 , [ @ array , [ value | acc ] | stack ] , decode )
312
312
_ , _rest ->
@@ -324,16 +324,16 @@ defmodule Jason.Decoder do
324
324
325
325
defp object ( data , original , skip , stack , decode , value ) do
326
326
bytecase data do
327
- _ in '\s \n \t \r ' , rest ->
327
+ _ in ~c ' \s \n \t \r ' , rest ->
328
328
object ( rest , original , skip + 1 , stack , decode , value )
329
- _ in '}' , rest ->
329
+ _ in ~c ' }' , rest ->
330
330
skip = skip + 1
331
331
[ key , acc | stack ] = stack
332
332
decode ( keys: key_decode ) = decode
333
333
final = [ { key_decode . ( key ) , value } | acc ]
334
334
decode ( objects: object_decode ) = decode
335
335
continue ( rest , original , skip , stack , decode , object_decode . ( final ) )
336
- _ in ',' , rest ->
336
+ _ in ~c ' ,' , rest ->
337
337
skip = skip + 1
338
338
[ key , acc | stack ] = stack
339
339
decode ( keys: key_decode ) = decode
@@ -348,17 +348,17 @@ defmodule Jason.Decoder do
348
348
349
349
defp key ( data , original , skip , stack , decode ) do
350
350
bytecase data do
351
- _ in '\s \n \t \r ' , rest ->
351
+ _ in ~c ' \s \n \t \r ' , rest ->
352
352
key ( rest , original , skip + 1 , stack , decode )
353
- _ in '}' , rest ->
353
+ _ in ~c ' }' , rest ->
354
354
case stack do
355
355
[ [ ] | stack ] ->
356
356
decode ( objects: object_decode ) = decode
357
357
continue ( rest , original , skip + 1 , stack , decode , object_decode . ( [ ] ) )
358
358
_ ->
359
359
error ( original , skip )
360
360
end
361
- _ in '"' , rest ->
361
+ _ in ~c ' "' , rest ->
362
362
string ( rest , original , skip + 1 , [ @ key | stack ] , decode , 0 )
363
363
_ , _rest ->
364
364
error ( original , skip )
@@ -369,9 +369,9 @@ defmodule Jason.Decoder do
369
369
370
370
defp key ( data , original , skip , stack , decode , value ) do
371
371
bytecase data do
372
- _ in '\s \n \t \r ' , rest ->
372
+ _ in ~c ' \s \n \t \r ' , rest ->
373
373
key ( rest , original , skip + 1 , stack , decode , value )
374
- _ in ':' , rest ->
374
+ _ in ~c ' :' , rest ->
375
375
value ( rest , original , skip + 1 , [ @ object , value | stack ] , decode )
376
376
_ , _rest ->
377
377
error ( original , skip )
@@ -385,11 +385,11 @@ defmodule Jason.Decoder do
385
385
# http://bjoern.hoehrmann.de/utf-8/decoder/dfa/
386
386
defp string ( data , original , skip , stack , decode , len ) do
387
387
bytecase data , 128 do
388
- _ in '"' , rest ->
388
+ _ in ~c ' "' , rest ->
389
389
decode ( strings: string_decode ) = decode
390
390
string = string_decode . ( binary_part ( original , skip , len ) )
391
391
continue ( rest , original , skip + len + 1 , stack , decode , string )
392
- _ in '\\ ' , rest ->
392
+ _ in ~c ' \\ ' , rest ->
393
393
part = binary_part ( original , skip , len )
394
394
escape ( rest , original , skip + len , stack , decode , part )
395
395
_ in unquote ( 0x00 .. 0x1F ) , _rest ->
@@ -409,11 +409,11 @@ defmodule Jason.Decoder do
409
409
410
410
defp string ( data , original , skip , stack , decode , acc , len ) do
411
411
bytecase data , 128 do
412
- _ in '"' , rest ->
412
+ _ in ~c ' "' , rest ->
413
413
last = binary_part ( original , skip , len )
414
414
string = IO . iodata_to_binary ( [ acc | last ] )
415
415
continue ( rest , original , skip + len + 1 , stack , decode , string )
416
- _ in '\\ ' , rest ->
416
+ _ in ~c ' \\ ' , rest ->
417
417
part = binary_part ( original , skip , len )
418
418
escape ( rest , original , skip + len , stack , decode , [ acc | part ] )
419
419
_ in unquote ( 0x00 .. 0x1F ) , _rest ->
@@ -433,23 +433,23 @@ defmodule Jason.Decoder do
433
433
434
434
defp escape ( data , original , skip , stack , decode , acc ) do
435
435
bytecase data do
436
- _ in 'b' , rest ->
437
- string ( rest , original , skip + 2 , stack , decode , [ acc | '\b ' ] , 0 )
438
- _ in 't' , rest ->
439
- string ( rest , original , skip + 2 , stack , decode , [ acc | '\t ' ] , 0 )
440
- _ in 'n' , rest ->
441
- string ( rest , original , skip + 2 , stack , decode , [ acc | '\n ' ] , 0 )
442
- _ in 'f' , rest ->
443
- string ( rest , original , skip + 2 , stack , decode , [ acc | '\f ' ] , 0 )
444
- _ in 'r' , rest ->
445
- string ( rest , original , skip + 2 , stack , decode , [ acc | '\r ' ] , 0 )
446
- _ in '"' , rest ->
447
- string ( rest , original , skip + 2 , stack , decode , [ acc | '\" ' ] , 0 )
448
- _ in '/' , rest ->
449
- string ( rest , original , skip + 2 , stack , decode , [ acc | '/' ] , 0 )
450
- _ in '\\ ' , rest ->
451
- string ( rest , original , skip + 2 , stack , decode , [ acc | '\\ ' ] , 0 )
452
- _ in 'u' , rest ->
436
+ _ in ~c ' b' , rest ->
437
+ string ( rest , original , skip + 2 , stack , decode , [ acc | ~c ' \b ' ] , 0 )
438
+ _ in ~c ' t' , rest ->
439
+ string ( rest , original , skip + 2 , stack , decode , [ acc | ~c ' \t ' ] , 0 )
440
+ _ in ~c ' n' , rest ->
441
+ string ( rest , original , skip + 2 , stack , decode , [ acc | ~c ' \n ' ] , 0 )
442
+ _ in ~c ' f' , rest ->
443
+ string ( rest , original , skip + 2 , stack , decode , [ acc | ~c ' \f ' ] , 0 )
444
+ _ in ~c ' r' , rest ->
445
+ string ( rest , original , skip + 2 , stack , decode , [ acc | ~c ' \r ' ] , 0 )
446
+ _ in ~c ' "' , rest ->
447
+ string ( rest , original , skip + 2 , stack , decode , [ acc | ~c ' \" ' ] , 0 )
448
+ _ in ~c ' /' , rest ->
449
+ string ( rest , original , skip + 2 , stack , decode , [ acc | ~c ' /' ] , 0 )
450
+ _ in ~c ' \\ ' , rest ->
451
+ string ( rest , original , skip + 2 , stack , decode , [ acc | ~c ' \\ ' ] , 0 )
452
+ _ in ~c ' u' , rest ->
453
453
escapeu ( rest , original , skip , stack , decode , acc )
454
454
_ , _rest ->
455
455
error ( original , skip + 1 )
@@ -606,7 +606,7 @@ defmodule Jason.Decoder do
606
606
end
607
607
608
608
defp escapeu_surrogate_clauses ( last , rest , original , skip , stack , decode , acc , hi ) do
609
- digits1 = 'Dd'
609
+ digits1 = ~c ' Dd'
610
610
digits2 = Stream . concat ( [ ?C .. ?F , ?c .. ?f ] )
611
611
for { int , first } <- unicode_escapes ( digits1 , digits2 ) do
612
612
escapeu_surrogate_clause ( int , first , last , rest , original , skip , stack , decode , acc , hi )
@@ -692,7 +692,7 @@ defmodule Jason.Decoder do
692
692
end
693
693
694
694
defp terminate ( << byte , rest :: bits >> , original , skip , stack , decode , value )
695
- when byte in '\s \n \r \t ' do
695
+ when byte in ~c ' \s \n \r \t ' do
696
696
terminate ( rest , original , skip + 1 , stack , decode , value )
697
697
end
698
698
defp terminate ( << >> , _original , _skip , _stack , _decode , value ) do
0 commit comments