Make query parser more strict and improve display of errors
This commit is contained in:
parent
264064df36
commit
99d552092c
7 changed files with 243 additions and 142 deletions
|
@ -1,4 +1,21 @@
|
|||
const QUERY = ['<"P">', '"P" "P"', 'P "P"', '"p" p', '"const": p'];
|
||||
const QUERY = [
|
||||
'<"P">',
|
||||
'"P" "P"',
|
||||
'P "P"',
|
||||
'"p" p',
|
||||
'"const": p',
|
||||
"<:a>", "<::a>",
|
||||
"((a))",
|
||||
"->,a",
|
||||
"(p -> p",
|
||||
"::a::b",
|
||||
"a::::b",
|
||||
"a::b::",
|
||||
":a",
|
||||
"a b:",
|
||||
"a (b:",
|
||||
"{:",
|
||||
];
|
||||
|
||||
const PARSED = [
|
||||
{
|
||||
|
@ -51,4 +68,124 @@ const PARSED = [
|
|||
userQuery: "\"const\": p",
|
||||
error: "You cannot use quotes on type filter",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "<:a>",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: "<:a>",
|
||||
error: "Unexpected `:` after `<`",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "<::a>",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: "<::a>",
|
||||
error: "Unexpected `::`: paths cannot start with `::`",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "((a))",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: "((a))",
|
||||
error: "Unexpected `(` after `(`",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "->,a",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: "->,a",
|
||||
error: "Unexpected `,` after `->`",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "(p -> p",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: "(p -> p",
|
||||
error: "Unexpected `-` after `(`",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "::a::b",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: "::a::b",
|
||||
error: "Paths cannot start with `::`",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "a::::b",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: "a::::b",
|
||||
error: "Unexpected `::::`",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "a::b::",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: "a::b::",
|
||||
error: "Paths cannot end with `::`",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: ":a",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: ":a",
|
||||
error: "Expected type filter before `:`",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "a b:",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: "a b:",
|
||||
error: "Unexpected `:`",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "a (b:",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: "a (b:",
|
||||
error: "Unexpected `:` after `(`",
|
||||
},
|
||||
{
|
||||
args: [],
|
||||
elems: [],
|
||||
foundElems: 0,
|
||||
original: "{:",
|
||||
returned: [],
|
||||
typeFilter: -1,
|
||||
userQuery: "{:",
|
||||
error: "Unknown type filter `{`",
|
||||
},
|
||||
];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue