Download testing/json_schema_cases.json from PYTHAI/bankml: direct link, hf CLI and curl.
- Browser
- Download file 48.2 kB
-
https://huggingface.co/spaces/PYTHAI/bankml/resolve/main/testing/json_schema_cases.json
- Command line
-
hf download hf://spaces/PYTHAI/bankml/testing/json_schema_cases.json
-
curl -L -o json_schema_cases.json https://huggingface.co/spaces/PYTHAI/bankml/resolve/main/testing/json_schema_cases.json
48.2 kB
| { | |
| "source": "llama.cpp b11192 (171e8846b) tests/test-json-schema-to-grammar.cpp, test_all(): every case with its expected grammar; MIT, Copyright (c) 2023-2026 The ggml authors (LICENSING.md)", | |
| "cases": [ | |
| { | |
| "name": "min 0", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": 0\n }", | |
| "grammar": "\n root ::= ([0] | [1-9] [0-9]{0,15})\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min 1", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": 1\n }", | |
| "grammar": "\n root ::= ([1-9] [0-9]{0,15})\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min 3", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": 3\n }", | |
| "grammar": "\n root ::= ([1-2] [0-9]{1,15} | [3-9] [0-9]{0,15})\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min 9", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": 9\n }", | |
| "grammar": "\n root ::= ([1-8] [0-9]{1,15} | [9] [0-9]{0,15})\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min 10", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": 10\n }", | |
| "grammar": "\n root ::= ([1] ([0-9]{1,15}) | [2-9] [0-9]{1,15})\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min 25", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": 25\n }", | |
| "grammar": "\n root ::= ([1] [0-9]{2,15} | [2] ([0-4] [0-9]{1,14} | [5-9] [0-9]{0,14}) | [3-9] [0-9]{1,15})\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "max 30", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"maximum\": 30\n }", | |
| "grammar": "\n root ::= (\"-\" [1-9] [0-9]{0,15} | [0-9] | ([1-2] [0-9] | [3] \"0\"))\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min -5", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": -5\n }", | |
| "grammar": "\n root ::= (\"-\" ([0-5]) | [0] | [1-9] [0-9]{0,15})\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min -123", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": -123\n }", | |
| "grammar": "\n root ::= (\"-\" ([0-9] | ([1-8] [0-9] | [9] [0-9]) | \"1\" ([0-1] [0-9] | [2] [0-3])) | [0] | [1-9] [0-9]{0,15})\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "max -5", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"maximum\": -5\n }", | |
| "grammar": "\n root ::= (\"-\" ([0-4] [0-9]{1,15} | [5-9] [0-9]{0,15}))\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "max 1", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"maximum\": 1\n }", | |
| "grammar": "\n root ::= (\"-\" [1-9] [0-9]{0,15} | [0-1])\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "max 100", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"maximum\": 100\n }", | |
| "grammar": "\n root ::= (\"-\" [1-9] [0-9]{0,15} | [0-9] | ([1-8] [0-9] | [9] [0-9]) | \"100\")\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min 0 max 23", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 23\n }", | |
| "grammar": "\n root ::= ([0-9] | ([1] [0-9] | [2] [0-3]))\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min 15 max 300", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": 15,\n \"maximum\": 300\n }", | |
| "grammar": "\n root ::= (([1] ([5-9]) | [2-9] [0-9]) | ([1-2] [0-9]{2} | [3] \"00\"))\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min 5 max 30", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": 5,\n \"maximum\": 30\n }", | |
| "grammar": "\n root ::= ([5-9] | ([1-2] [0-9] | [3] \"0\"))\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min -123 max 42", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": -123,\n \"maximum\": 42\n }", | |
| "grammar": "\n root ::= (\"-\" ([0-9] | ([1-8] [0-9] | [9] [0-9]) | \"1\" ([0-1] [0-9] | [2] [0-3])) | [0-9] | ([1-3] [0-9] | [4] [0-2]))\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min -10 max 10", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\",\n \"minimum\": -10,\n \"maximum\": 10\n }", | |
| "grammar": "\n root ::= (\"-\" ([0-9] | \"10\") | [0-9] | \"10\")\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "unknown type", | |
| "success": false, | |
| "schema": "{\n \"type\": \"kaboom\"\n }", | |
| "grammar": "" | |
| }, | |
| { | |
| "name": "invalid type", | |
| "success": false, | |
| "schema": "{\n \"type\": 123\n }", | |
| "grammar": "" | |
| }, | |
| { | |
| "name": "empty schema (any value)", | |
| "success": true, | |
| "schema": "{}", | |
| "grammar": "\n array ::= \"[\" space ( value (\",\" space value)* )? space \"]\"\n boolean ::= (\"true\" | \"false\")\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n null ::= \"null\"\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n object ::= \"{\" space ( string \":\" space value (\",\" space string \":\" space value)* )? space \"}\"\n root ::= value\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n value ::= object | array | string | number | boolean | null\n " | |
| }, | |
| { | |
| "name": "exotic formats", | |
| "success": true, | |
| "schema": "{\n \"items\": [\n { \"format\": \"date\" },\n { \"format\": \"uuid\" },\n { \"format\": \"time\" },\n { \"format\": \"date-time\" }\n ]\n }", | |
| "grammar": "\n date ::= [0-9]{4} \"-\" ( \"0\" [1-9] | \"1\" [0-2] ) \"-\" ( \"0\" [1-9] | [1-2] [0-9] | \"3\" [0-1] )\n date-string ::= \"\\\"\" date \"\\\"\"\n date-time ::= date \"T\" time\n date-time-string ::= \"\\\"\" date-time \"\\\"\"\n root ::= \"[\" space tuple-0 \",\" space uuid \",\" space tuple-2 \",\" space tuple-3 space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n time ::= ([01] [0-9] | \"2\" [0-3]) \":\" [0-5] [0-9] \":\" [0-5] [0-9] ( \".\" [0-9]{3} )? ( \"Z\" | ( \"+\" | \"-\" ) ( [01] [0-9] | \"2\" [0-3] ) \":\" [0-5] [0-9] )\n time-string ::= \"\\\"\" time \"\\\"\"\n tuple-0 ::= date-string\n tuple-2 ::= time-string\n tuple-3 ::= date-time-string\n uuid ::= \"\\\"\" [0-9a-fA-F]{8} \"-\" [0-9a-fA-F]{4} \"-\" [0-9a-fA-F]{4} \"-\" [0-9a-fA-F]{4} \"-\" [0-9a-fA-F]{12} \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "string", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\"\n }", | |
| "grammar": "\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= \"\\\"\" char* \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "string w/ min length 1", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"minLength\": 1\n }", | |
| "grammar": "\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= \"\\\"\" char+ \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "string w/ min length 3", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"minLength\": 3\n }", | |
| "grammar": "\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= \"\\\"\" char{3,} \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "string w/ max length", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"maxLength\": 3\n }", | |
| "grammar": "\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= \"\\\"\" char{0,3} \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "string w/ min & max length", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 4\n }", | |
| "grammar": "\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= \"\\\"\" char{1,4} \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "boolean", | |
| "success": true, | |
| "schema": "{\n \"type\": \"boolean\"\n }", | |
| "grammar": "\n root ::= (\"true\" | \"false\")\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "integer", | |
| "success": true, | |
| "schema": "{\n \"type\": \"integer\"\n }", | |
| "grammar": "\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n root ::= (\"-\"? integral-part)\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "string const", | |
| "success": true, | |
| "schema": "{\n \"const\": \"foo\"\n }", | |
| "grammar": "\n root ::= \"\\\"foo\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "non-string const", | |
| "success": true, | |
| "schema": "{\n \"const\": 123\n }", | |
| "grammar": "\n root ::= \"123\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "non-string enum", | |
| "success": true, | |
| "schema": "{\n \"enum\": [\"red\", \"amber\", \"green\", null, 42, [\"foo\"]]\n }", | |
| "grammar": "\n root ::= (\"\\\"red\\\"\" | \"\\\"amber\\\"\" | \"\\\"green\\\"\" | \"null\" | \"42\" | \"[\\\"foo\\\"]\")\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "string array", | |
| "success": true, | |
| "schema": "{\n \"type\": \"array\",\n \"prefixItems\": { \"type\": \"string\" }\n }", | |
| "grammar": "\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= \"[\" space (string (\",\" space string)*)? space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "nullable string array", | |
| "success": true, | |
| "schema": "{\n \"type\": [\"array\", \"null\"],\n \"prefixItems\": { \"type\": \"string\" }\n }", | |
| "grammar": "\n alternative-0 ::= \"[\" space (string (\",\" space string)*)? space \"]\"\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n null ::= \"null\"\n root ::= alternative-0 | null\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "tuple1", | |
| "success": true, | |
| "schema": "{\n \"prefixItems\": [{ \"type\": \"string\" }]\n }", | |
| "grammar": "\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= \"[\" space string space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "tuple2", | |
| "success": true, | |
| "schema": "{\n \"prefixItems\": [{ \"type\": \"string\" }, { \"type\": \"number\" }]\n }", | |
| "grammar": "\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n root ::= \"[\" space string \",\" space number space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "array with empty items", | |
| "success": true, | |
| "schema": "{\n \"type\": \"array\",\n \"items\": {}\n }", | |
| "grammar": "\n array ::= \"[\" space ( value (\",\" space value)* )? space \"]\"\n boolean ::= (\"true\" | \"false\")\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n null ::= \"null\"\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n object ::= \"{\" space ( string \":\" space value (\",\" space string \":\" space value)* )? space \"}\"\n root ::= \"[\" space ( value (\",\" space value)* )? space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n value ::= object | array | string | number | boolean | null\n " | |
| }, | |
| { | |
| "name": "array with empty items and prefixItems", | |
| "success": true, | |
| "schema": "{\n \"type\": \"array\",\n \"items\": {},\n \"prefixItems\": { \"type\": \"string\" }\n }", | |
| "grammar": "\n array ::= \"[\" space ( value (\",\" space value)* )? space \"]\"\n boolean ::= (\"true\" | \"false\")\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n null ::= \"null\"\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n object ::= \"{\" space ( string \":\" space value (\",\" space string \":\" space value)* )? space \"}\"\n root ::= \"[\" space ( value (\",\" space value)* )? space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n value ::= object | array | string | number | boolean | null\n " | |
| }, | |
| { | |
| "name": "number", | |
| "success": true, | |
| "schema": "{\n \"type\": \"number\"\n }", | |
| "grammar": "\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n root ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "minItems", | |
| "success": true, | |
| "schema": "{\n \"items\": {\n \"type\": \"boolean\"\n },\n \"minItems\": 2\n }", | |
| "grammar": "\n boolean ::= (\"true\" | \"false\")\n root ::= \"[\" space boolean (\",\" space boolean)+ space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "maxItems 0", | |
| "success": true, | |
| "schema": "{\n \"items\": {\n \"type\": \"boolean\"\n },\n \"maxItems\": 0\n }", | |
| "grammar": "\n boolean ::= (\"true\" | \"false\")\n root ::= \"[\" space space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "maxItems 1", | |
| "success": true, | |
| "schema": "{\n \"items\": {\n \"type\": \"boolean\"\n },\n \"maxItems\": 1\n }", | |
| "grammar": "\n boolean ::= (\"true\" | \"false\")\n root ::= \"[\" space boolean? space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "maxItems 2", | |
| "success": true, | |
| "schema": "{\n \"items\": {\n \"type\": \"boolean\"\n },\n \"maxItems\": 2\n }", | |
| "grammar": "\n boolean ::= (\"true\" | \"false\")\n root ::= \"[\" space (boolean (\",\" space boolean)?)? space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min + maxItems", | |
| "success": true, | |
| "schema": "{\n \"items\": {\n \"type\": [\"number\", \"integer\"]\n },\n \"minItems\": 3,\n \"maxItems\": 5\n }", | |
| "grammar": "\n decimal-part ::= [0-9]{1,16}\n integer ::= (\"-\"? integral-part)\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n item ::= number | integer\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n root ::= \"[\" space item (\",\" space item){2,4} space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min + max items with min + max values across zero", | |
| "success": true, | |
| "schema": "{\n \"items\": {\n \"type\": \"integer\",\n \"minimum\": -12,\n \"maximum\": 207\n },\n \"minItems\": 3,\n \"maxItems\": 5\n }", | |
| "grammar": "\n item ::= (\"-\" ([0-9] | \"1\" [0-2]) | [0-9] | ([1-8] [0-9] | [9] [0-9]) | ([1] [0-9]{2} | [2] \"0\" [0-7]))\n root ::= \"[\" space item (\",\" space item){2,4} space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "min + max items with min + max values", | |
| "success": true, | |
| "schema": "{\n \"items\": {\n \"type\": \"integer\",\n \"minimum\": 12,\n \"maximum\": 207\n },\n \"minItems\": 3,\n \"maxItems\": 5\n }", | |
| "grammar": "\n item ::= (([1] ([2-9]) | [2-9] [0-9]) | ([1] [0-9]{2} | [2] \"0\" [0-7]))\n root ::= \"[\" space item (\",\" space item){2,4} space \"]\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "simple regexp", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"^abc?d*efg+(hij)?kl$\"\n }", | |
| "grammar": "\n root ::= \"\\\"\" (\"ab\" \"c\"? \"d\"* \"ef\" \"g\"+ (\"hij\")? \"kl\") \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "regexp escapes", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"^\\\\[\\\\]\\\\{\\\\}\\\\(\\\\)\\\\|\\\\+\\\\*\\\\?$\"\n }", | |
| "grammar": "\n root ::= \"\\\"\" (\"[]{}()|+*?\") \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "regexp quote", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"^\\\"$\"\n }", | |
| "grammar": "\n root ::= \"\\\"\" (\"\\\"\") \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "regexp with top-level alternation", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"^A|B|C|D$\"\n }", | |
| "grammar": "\n root ::= \"\\\"\" (\"A\" | \"B\" | \"C\" | \"D\") \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "regexp", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"^(\\\\([0-9]{1,3}\\\\))?[0-9]{3}-[0-9]{4} a{3,5}nd...$\"\n }", | |
| "grammar": "\n dot ::= [^\\x0A\\x0D]\n root ::= \"\\\"\" ((\"(\" root-1{1,3} \")\")? root-1{3,3} \"-\" root-1{4,4} \" \" \"a\"{3,5} \"nd\" dot dot dot) \"\\\"\"\n root-1 ::= [0-9]\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "required props in original order", | |
| "success": true, | |
| "schema": "{\n \"type\": \"object\",\n \"properties\": {\n \"b\": {\"type\": \"string\"},\n \"c\": {\"type\": \"string\"},\n \"a\": {\"type\": \"string\"}\n },\n \"required\": [\n \"a\",\n \"b\",\n \"c\"\n ],\n \"additionalProperties\": false,\n \"definitions\": {}\n }", | |
| "grammar": "\n a-kv ::= \"\\\"a\\\"\" space \":\" space string\n b-kv ::= \"\\\"b\\\"\" space \":\" space string\n c-kv ::= \"\\\"c\\\"\" space \":\" space string\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= \"{\" space b-kv \",\" space c-kv \",\" space a-kv space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "1 optional prop", | |
| "success": true, | |
| "schema": "{\n \"properties\": {\n \"a\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false\n }", | |
| "grammar": "\n a-kv ::= \"\\\"a\\\"\" space \":\" space string\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= \"{\" space (a-kv )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "N optional props", | |
| "success": true, | |
| "schema": "{\n \"properties\": {\n \"a\": {\"type\": \"string\"},\n \"b\": {\"type\": \"string\"},\n \"c\": {\"type\": \"string\"}\n },\n \"additionalProperties\": false\n }", | |
| "grammar": "\n a-kv ::= \"\\\"a\\\"\" space \":\" space string\n a-rest ::= ( \",\" space b-kv )? b-rest\n b-kv ::= \"\\\"b\\\"\" space \":\" space string\n b-rest ::= ( \",\" space c-kv )?\n c-kv ::= \"\\\"c\\\"\" space \":\" space string\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= \"{\" space (a-kv a-rest | b-kv b-rest | c-kv )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "required + optional props each in original order", | |
| "success": true, | |
| "schema": "{\n \"properties\": {\n \"b\": {\"type\": \"string\"},\n \"a\": {\"type\": \"string\"},\n \"d\": {\"type\": \"string\"},\n \"c\": {\"type\": \"string\"}\n },\n \"required\": [\"a\", \"b\"],\n \"additionalProperties\": false\n }", | |
| "grammar": "\n a-kv ::= \"\\\"a\\\"\" space \":\" space string\n b-kv ::= \"\\\"b\\\"\" space \":\" space string\n c-kv ::= \"\\\"c\\\"\" space \":\" space string\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n d-kv ::= \"\\\"d\\\"\" space \":\" space string\n d-rest ::= ( \",\" space c-kv )?\n root ::= \"{\" space b-kv \",\" space a-kv ( \",\" space ( d-kv d-rest | c-kv ) )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "additional props", | |
| "success": true, | |
| "schema": "{\n \"type\": \"object\",\n \"additionalProperties\": {\"type\": \"array\", \"items\": {\"type\": \"number\"}}\n }", | |
| "grammar": "\n additional-kv ::= string \":\" space additional-value\n additional-value ::= \"[\" space (number (\",\" space number)*)? space \"]\"\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n root ::= \"{\" space (additional-kv ( \",\" space additional-kv )* )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "additional props (true)", | |
| "success": true, | |
| "schema": "{\n \"type\": \"object\",\n \"additionalProperties\": true\n }", | |
| "grammar": "\n array ::= \"[\" space ( value (\",\" space value)* )? space \"]\"\n boolean ::= (\"true\" | \"false\")\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n null ::= \"null\"\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n object ::= \"{\" space ( string \":\" space value (\",\" space string \":\" space value)* )? space \"}\"\n root ::= object\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n value ::= object | array | string | number | boolean | null\n " | |
| }, | |
| { | |
| "name": "additional props (implicit)", | |
| "success": true, | |
| "schema": "{\n \"type\": \"object\"\n }", | |
| "grammar": "\n array ::= \"[\" space ( value (\",\" space value)* )? space \"]\"\n boolean ::= (\"true\" | \"false\")\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n null ::= \"null\"\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n object ::= \"{\" space ( string \":\" space value (\",\" space string \":\" space value)* )? space \"}\"\n root ::= object\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n value ::= object | array | string | number | boolean | null\n " | |
| }, | |
| { | |
| "name": "empty w/o additional props", | |
| "success": true, | |
| "schema": "{\n \"type\": \"object\",\n \"additionalProperties\": false\n }", | |
| "grammar": "\n root ::= \"{\" space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "required + additional props", | |
| "success": true, | |
| "schema": "{\n \"type\": \"object\",\n \"properties\": {\n \"a\": {\"type\": \"number\"}\n },\n \"required\": [\"a\"],\n \"additionalProperties\": {\"type\": \"string\"}\n }", | |
| "grammar": "\n a-kv ::= \"\\\"a\\\"\" space \":\" space number\n additional-k ::= [\"] ( [a] char+ | [^\"a] char* )? [\"]\n additional-kv ::= additional-k \":\" space string\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n root ::= \"{\" space a-kv ( \",\" space ( additional-kv ( \",\" space additional-kv )* ) )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "optional + additional props", | |
| "success": true, | |
| "schema": "{\n \"type\": \"object\",\n \"properties\": {\n \"a\": {\"type\": \"number\"}\n },\n \"additionalProperties\": {\"type\": \"number\"}\n }", | |
| "grammar": "\n a-kv ::= \"\\\"a\\\"\" space \":\" space number\n a-rest ::= ( \",\" space additional-kv )*\n additional-k ::= [\"] ( [a] char+ | [^\"a] char* )? [\"]\n additional-kv ::= additional-k \":\" space number\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n root ::= \"{\" space (a-kv a-rest | additional-kv ( \",\" space additional-kv )* )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "required + optional + additional props", | |
| "success": true, | |
| "schema": "{\n \"type\": \"object\",\n \"properties\": {\n \"and\": {\"type\": \"number\"},\n \"also\": {\"type\": \"number\"}\n },\n \"required\": [\"and\"],\n \"additionalProperties\": {\"type\": \"number\"}\n }", | |
| "grammar": "\n additional-k ::= [\"] ( [a] ([l] ([s] ([o] char+ | [^\"o] char*) | [^\"s] char*) | [n] ([d] char+ | [^\"d] char*) | [^\"ln] char*) | [^\"a] char* )? [\"]\n additional-kv ::= additional-k \":\" space number\n also-kv ::= \"\\\"also\\\"\" space \":\" space number\n also-rest ::= ( \",\" space additional-kv )*\n and-kv ::= \"\\\"and\\\"\" space \":\" space number\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n root ::= \"{\" space and-kv ( \",\" space ( also-kv also-rest | additional-kv ( \",\" space additional-kv )* ) )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "optional props with empty name", | |
| "success": true, | |
| "schema": "{\n \"properties\": {\n \"\": {\"type\": \"integer\"},\n \"a\": {\"type\": \"integer\"}\n },\n \"additionalProperties\": {\"type\": \"integer\"}\n }", | |
| "grammar": "\n -kv ::= \"\\\"\\\"\" space \":\" space root\n -rest ::= ( \",\" space a-kv )? a-rest\n a-kv ::= \"\\\"a\\\"\" space \":\" space integer\n a-rest ::= ( \",\" space additional-kv )*\n additional-k ::= [\"] ( [a] char+ | [^\"a] char* ) [\"]\n additional-kv ::= additional-k \":\" space integer\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n integer ::= (\"-\"? integral-part)\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n root ::= (\"-\"? integral-part)\n root0 ::= \"{\" space (-kv -rest | a-kv a-rest | additional-kv ( \",\" space additional-kv )* )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "optional props with nested names", | |
| "success": true, | |
| "schema": "{\n \"properties\": {\n \"a\": {\"type\": \"integer\"},\n \"aa\": {\"type\": \"integer\"}\n },\n \"additionalProperties\": {\"type\": \"integer\"}\n }", | |
| "grammar": "\n a-kv ::= \"\\\"a\\\"\" space \":\" space integer\n a-rest ::= ( \",\" space aa-kv )? aa-rest\n aa-kv ::= \"\\\"aa\\\"\" space \":\" space integer\n aa-rest ::= ( \",\" space additional-kv )*\n additional-k ::= [\"] ( [a] ([a] char+ | [^\"a] char*) | [^\"a] char* )? [\"]\n additional-kv ::= additional-k \":\" space integer\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n integer ::= (\"-\"? integral-part)\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n root ::= \"{\" space (a-kv a-rest | aa-kv aa-rest | additional-kv ( \",\" space additional-kv )* )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "optional props with common prefix", | |
| "success": true, | |
| "schema": "{\n \"properties\": {\n \"ab\": {\"type\": \"integer\"},\n \"ac\": {\"type\": \"integer\"}\n },\n \"additionalProperties\": {\"type\": \"integer\"}\n }", | |
| "grammar": "\n ab-kv ::= \"\\\"ab\\\"\" space \":\" space integer\n ab-rest ::= ( \",\" space ac-kv )? ac-rest\n ac-kv ::= \"\\\"ac\\\"\" space \":\" space integer\n ac-rest ::= ( \",\" space additional-kv )*\n additional-k ::= [\"] ( [a] ([b] char+ | [c] char+ | [^\"bc] char*) | [^\"a] char* )? [\"]\n additional-kv ::= additional-k \":\" space integer\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n integer ::= (\"-\"? integral-part)\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n root ::= \"{\" space (ab-kv ab-rest | ac-kv ac-rest | additional-kv ( \",\" space additional-kv )* )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "top-level $ref", | |
| "success": true, | |
| "schema": "{\n \"$ref\": \"#/definitions/foo\",\n \"definitions\": {\n \"foo\": {\n \"type\": \"object\",\n \"properties\": {\n \"a\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"a\"\n ],\n \"additionalProperties\": false\n }\n }\n }", | |
| "grammar": "\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n ref-definitions-foo ::= \"{\" space ref-definitions-foo-a-kv space \"}\"\n ref-definitions-foo-a-kv ::= \"\\\"a\\\"\" space \":\" space string\n root ::= ref-definitions-foo\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "anyOf", | |
| "success": true, | |
| "schema": "{\n \"anyOf\": [\n {\"$ref\": \"#/definitions/foo\"},\n {\"$ref\": \"#/definitions/bar\"}\n ],\n \"definitions\": {\n \"foo\": {\n \"properties\": {\"a\": {\"type\": \"number\"}}\n },\n \"bar\": {\n \"properties\": {\"b\": {\"type\": \"number\"}}\n }\n },\n \"type\": \"object\"\n }", | |
| "grammar": "\n alternative-0 ::= ref-definitions-foo\n alternative-1 ::= ref-definitions-bar\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n ref-definitions-bar ::= \"{\" space (ref-definitions-bar-b-kv )? space \"}\"\n ref-definitions-bar-b-kv ::= \"\\\"b\\\"\" space \":\" space number\n ref-definitions-foo ::= \"{\" space (ref-definitions-foo-a-kv )? space \"}\"\n ref-definitions-foo-a-kv ::= \"\\\"a\\\"\" space \":\" space number\n root ::= alternative-0 | alternative-1\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "anyOf $ref", | |
| "success": true, | |
| "schema": "{\n \"properties\": {\n \"a\": {\n \"anyOf\": [\n {\"type\": \"string\"},\n {\"type\": \"number\"}\n ]\n },\n \"b\": {\n \"anyOf\": [\n {\"$ref\": \"#/properties/a/anyOf/0\"},\n {\"type\": \"boolean\"}\n ]\n }\n },\n \"type\": \"object\"\n }", | |
| "grammar": "\n a ::= string | number\n a-kv ::= \"\\\"a\\\"\" space \":\" space a\n a-rest ::= ( \",\" space b-kv )?\n b ::= b-0 | boolean\n b-0 ::= string\n b-kv ::= \"\\\"b\\\"\" space \":\" space b\n boolean ::= (\"true\" | \"false\")\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n root ::= \"{\" space (a-kv a-rest | b-kv )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "mix of allOf, anyOf and $ref (similar to https://json.schemastore.org/tsconfig.json)", | |
| "success": true, | |
| "schema": "{\n \"allOf\": [\n {\"$ref\": \"#/definitions/foo\"},\n {\"$ref\": \"#/definitions/bar\"},\n {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/baz\"},\n {\"$ref\": \"#/definitions/bam\"}\n ]\n }\n ],\n \"definitions\": {\n \"foo\": {\n \"properties\": {\"a\": {\"type\": \"number\"}}\n },\n \"bar\": {\n \"properties\": {\"b\": {\"type\": \"number\"}}\n },\n \"bam\": {\n \"properties\": {\"c\": {\"type\": \"number\"}}\n },\n \"baz\": {\n \"properties\": {\"d\": {\"type\": \"number\"}}\n }\n },\n \"type\": \"object\"\n }", | |
| "grammar": "\n a-kv ::= \"\\\"a\\\"\" space \":\" space number\n b-kv ::= \"\\\"b\\\"\" space \":\" space number\n c-kv ::= \"\\\"c\\\"\" space \":\" space number\n d-kv ::= \"\\\"d\\\"\" space \":\" space number\n d-rest ::= ( \",\" space c-kv )?\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n root ::= \"{\" space a-kv \",\" space b-kv ( \",\" space ( d-kv d-rest | c-kv ) )? space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "allOf with enum schema", | |
| "success": true, | |
| "schema": "{\n \"allOf\": [\n {\"$ref\": \"#/definitions/foo\"}\n ],\n \"definitions\": {\n \"foo\": {\n \"type\": \"string\",\n \"enum\": [\"a\", \"b\"]\n }\n }\n }", | |
| "grammar": "\n root ::= (\"\\\"a\\\"\" | \"\\\"b\\\"\")\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "allOf with multiple enum schemas", | |
| "success": true, | |
| "schema": "{\n \"allOf\": [\n {\"$ref\": \"#/definitions/foo\"},\n {\"$ref\": \"#/definitions/bar\"}\n ],\n \"definitions\": {\n \"foo\": {\n \"type\": \"string\",\n \"enum\": [\"a\", \"b\", \"c\"]\n },\n \"bar\": {\n \"type\": \"string\",\n \"enum\": [\"b\", \"c\", \"d\"]\n }\n }\n }", | |
| "grammar": "\n root ::= (\"\\\"b\\\"\" | \"\\\"c\\\"\")\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "conflicting names", | |
| "success": true, | |
| "schema": "{\n \"type\": \"object\",\n \"properties\": {\n \"number\": {\n \"type\": \"object\",\n \"properties\": {\n \"number\": {\n \"type\": \"object\",\n \"properties\": {\n \"root\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"root\"\n ],\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"number\"\n ],\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"number\"\n ],\n \"additionalProperties\": false,\n \"definitions\": {}\n }", | |
| "grammar": "\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n number- ::= \"{\" space number-number-kv space \"}\"\n number-kv ::= \"\\\"number\\\"\" space \":\" space number-\n number-number ::= \"{\" space number-number-root-kv space \"}\"\n number-number-kv ::= \"\\\"number\\\"\" space \":\" space number-number\n number-number-root-kv ::= \"\\\"root\\\"\" space \":\" space number\n root ::= \"{\" space number-kv space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "description only (no type) treated as unconstrained", | |
| "success": true, | |
| "schema": "{\"description\": \"The 0-based index of the last line to be retrieved (inclusive). If None, read until the end of the file.\"}", | |
| "grammar": "\n array ::= \"[\" space ( value (\",\" space value)* )? space \"]\"\n boolean ::= (\"true\" | \"false\")\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n decimal-part ::= [0-9]{1,16}\n integral-part ::= [0] | [1-9] [0-9]{0,15}\n null ::= \"null\"\n number ::= (\"-\"? integral-part) (\".\" decimal-part)? ([eE] [-+]? integral-part)?\n object ::= \"{\" space ( string \":\" space value (\",\" space string \":\" space value)* )? space \"}\"\n root ::= value\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n value ::= object | array | string | number | boolean | null\n " | |
| }, | |
| { | |
| "name": "literal string with escapes", | |
| "success": true, | |
| "schema": "{\n \"properties\": {\n \"code\": {\n \"const\": \" \\r \\n \\\" \\\\ \",\n \"description\": \"Generated code\",\n \"title\": \"Code\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\"\n ],\n \"title\": \"DecoderResponse\",\n \"type\": \"object\"\n }", | |
| "grammar": "\n code ::= \"\\\" \\\\r \\\\n \\\\\\\" \\\\\\\\ \\\"\"\n code-kv ::= \"\\\"code\\\"\" space \":\" space code\n root ::= \"{\" space code-kv space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "regexp with non-capturing group", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"^(?:foo|bar)baz$\"\n }", | |
| "grammar": "\n root ::= \"\\\"\" ((\"foo\" | \"bar\") \"baz\") \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "regexp with nested non-capturing groups", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"^(?:(?:ab)+c)?d$\"\n }", | |
| "grammar": "\n root ::= \"\\\"\" (((\"ab\")+ \"c\")? \"d\") \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "unanchored regexp", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"[0-9]+\"\n }", | |
| "grammar": "\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= string\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "regexp with unsupported shorthand", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"^[0-9]{3}\\\\w$\"\n }", | |
| "grammar": "\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= string\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| }, | |
| { | |
| "name": "regexp with escaped hyphen in a character class", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"^[a-z\\\\-]+$\"\n }", | |
| "grammar": "\n root ::= \"\\\"\" ([a-z\\-]+) \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "regexp with escaped hyphen outside a character class", | |
| "success": true, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"^a\\\\-b$\"\n }", | |
| "grammar": "\n root ::= \"\\\"\" (\"a\\-b\") \"\\\"\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n " | |
| }, | |
| { | |
| "name": "regexp with unbalanced parentheses", | |
| "success": false, | |
| "schema": "{\n \"type\": \"string\",\n \"pattern\": \"^(a$\"\n }", | |
| "grammar": "" | |
| }, | |
| { | |
| "name": "unsupported regexp in a property", | |
| "success": true, | |
| "schema": "{\n \"type\": \"object\",\n \"properties\": {\n \"a\": { \"type\": \"string\", \"pattern\": \"^(?=a)a$\" }\n },\n \"required\": [\"a\"],\n \"additionalProperties\": false\n }", | |
| "grammar": "\n a ::= string\n a-kv ::= \"\\\"a\\\"\" space \":\" space a\n char ::= [^\"\\\\\\x7F\\x00-\\x1F] | [\\\\] ([\"\\\\bfnrt] | \"u\" [0-9a-fA-F]{4})\n root ::= \"{\" space a-kv space \"}\"\n space ::= | \" \" | \"\\n\"{1,2} [ \\t]{0,20}\n string ::= \"\\\"\" char* \"\\\"\"\n " | |
| } | |
| ] | |
| } |