Fixed forward slash special case issue, added a bunch of test files that were successfully read!
This commit is contained in:
@@ -148,7 +148,7 @@ json_characters([Char|Chars]) --> json_character(Char), json_characters(Chars).
|
||||
escape_map([
|
||||
'"' - '"',
|
||||
('\\') - ('\\'),
|
||||
('/') - ('/'),
|
||||
('/') - ('/'), /* Forward slash parsed with or without a preceding backslash, but always generated with. */
|
||||
'\b' - 'b',
|
||||
'\f' - 'f',
|
||||
'\n' - 'n',
|
||||
@@ -156,9 +156,13 @@ escape_map([
|
||||
'\t' - 't' ]).
|
||||
|
||||
json_character(PrintChar) -->
|
||||
{ ( nonvar(PrintChar) ->
|
||||
dif(PrintChar, '/') /* Don't generate forward slash without preceding backslash */
|
||||
; true
|
||||
) },
|
||||
[PrintChar],
|
||||
{ escape_map(EscapeMap),
|
||||
\+ member(PrintChar-_, EscapeMap),
|
||||
{ dif(PrintChar, '"'),
|
||||
dif(PrintChar, '\\'),
|
||||
char_code(PrintChar, PrintCharCode),
|
||||
PrintCharCode in 32..1114111 /* 20.10FFFF */ }.
|
||||
json_character(EscapeChar) --> "\\", json_escape(EscapeChar).
|
||||
|
||||
1
src/tests/json/fail_bigint.json
Normal file
1
src/tests/json/fail_bigint.json
Normal file
@@ -0,0 +1 @@
|
||||
23456789012E666
|
||||
1
src/tests/json/pass_alnum.json
Normal file
1
src/tests/json/pass_alnum.json
Normal file
@@ -0,0 +1 @@
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWYZabcdefghijklmnopqrstuvwyz0123456789"
|
||||
1
src/tests/json/pass_bigfloat.json
Normal file
1
src/tests/json/pass_bigfloat.json
Normal file
@@ -0,0 +1 @@
|
||||
1.234567890E+34
|
||||
56
src/tests/json/pass_everything.json
Normal file
56
src/tests/json/pass_everything.json
Normal file
@@ -0,0 +1,56 @@
|
||||
[
|
||||
"JSON Test Pattern pass1",
|
||||
{"object with 1 member":["array with 1 element"]},
|
||||
{},
|
||||
[],
|
||||
-42,
|
||||
true,
|
||||
false,
|
||||
null,
|
||||
{
|
||||
"integer": 1234567890,
|
||||
"real": -9876.543210,
|
||||
"e": 0.123456789e-12,
|
||||
"E": 1.234567890E+34,
|
||||
"": 23456789012E66,
|
||||
"zero": 0,
|
||||
"one": 1,
|
||||
"space": " ",
|
||||
"quote": "\"",
|
||||
"backslash": "\\",
|
||||
"controls": "\b\f\n\r\t",
|
||||
"slash": "/ & \/",
|
||||
"alpha": "abcdefghijklmnopqrstuvwyz",
|
||||
"ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
|
||||
"digit": "0123456789",
|
||||
"special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
|
||||
"hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
|
||||
"true": true,
|
||||
"false": false,
|
||||
"null": null,
|
||||
"array":[ ],
|
||||
"object":{ },
|
||||
"address": "50 St. James Street",
|
||||
"url": "http://www.JSON.org/",
|
||||
"comment": "// /* <!-- --",
|
||||
"# -- --> */": " ",
|
||||
" s p a c e d " :[1,2 , 3
|
||||
|
||||
,
|
||||
|
||||
4 , 5 , 6 ,7 ],
|
||||
"compact": [1,2,3,4,5,6,7],
|
||||
"jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
|
||||
"quotes": "" \u0022 %22 0x22 034 "",
|
||||
"\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"
|
||||
: "A key can be any string"
|
||||
},
|
||||
0.5 ,98.6
|
||||
,
|
||||
99.44
|
||||
,
|
||||
|
||||
1066
|
||||
|
||||
|
||||
,"rosebud"]
|
||||
1
src/tests/json/pass_forward_slash.json
Normal file
1
src/tests/json/pass_forward_slash.json
Normal file
@@ -0,0 +1 @@
|
||||
"/ & \/"
|
||||
1
src/tests/json/pass_hex.json
Normal file
1
src/tests/json/pass_hex.json
Normal file
@@ -0,0 +1 @@
|
||||
"\u0123\u4567\u89AB\uCDEF\uabcd\uef4A"
|
||||
1
src/tests/json/pass_mandatory_escapes.json
Normal file
1
src/tests/json/pass_mandatory_escapes.json
Normal file
@@ -0,0 +1 @@
|
||||
" \" \\ \b\f\n\r\t "
|
||||
1
src/tests/json/pass_null.json
Normal file
1
src/tests/json/pass_null.json
Normal file
@@ -0,0 +1 @@
|
||||
null
|
||||
1
src/tests/json/pass_smallfloat.json
Normal file
1
src/tests/json/pass_smallfloat.json
Normal file
@@ -0,0 +1 @@
|
||||
0.123456789e-12
|
||||
1
src/tests/json/pass_special.json
Normal file
1
src/tests/json/pass_special.json
Normal file
@@ -0,0 +1 @@
|
||||
"`1~!@#$%^&*()_+-={':[,]}|;.</>?"
|
||||
Reference in New Issue
Block a user