diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 16846c1c8295..3818484efb69 100755 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -7079,10 +7079,15 @@ const CONST = { STATUS: 'status', SORT_BY: 'sortBy', SORT_ORDER: 'sortOrder', + VIEW: 'view', GROUP_BY: 'groupBy', COLUMNS: 'columns', LIMIT: 'limit', }, + VIEW: { + TABLE: 'table', + BAR: 'bar', + }, SYNTAX_FILTER_KEYS: { TYPE: 'type', STATUS: 'status', diff --git a/src/components/Search/types.ts b/src/components/Search/types.ts index 8fc0158c72fa..b1fc37b09a27 100644 --- a/src/components/Search/types.ts +++ b/src/components/Search/types.ts @@ -112,6 +112,7 @@ type TaskSearchStatus = ValueOf; type SingularSearchStatus = ExpenseSearchStatus | ExpenseReportSearchStatus | InvoiceSearchStatus | TripSearchStatus | TaskSearchStatus; type SearchStatus = SingularSearchStatus | SingularSearchStatus[]; type SearchGroupBy = ValueOf; +type SearchView = ValueOf; type TableColumnSize = ValueOf; type SearchDatePreset = ValueOf; type SearchWithdrawalType = ValueOf; @@ -247,6 +248,7 @@ type SearchQueryAST = { sortBy: SearchColumnType; sortOrder: SortOrder; groupBy?: SearchGroupBy; + view: SearchView; filters: ASTNode; policyID?: string[]; rawFilterList?: RawQueryFilter[]; @@ -327,6 +329,7 @@ export type { SearchParams, TableColumnSize, SearchGroupBy, + SearchView, SingularSearchStatus, SearchDatePreset, SearchWithdrawalType, diff --git a/src/libs/SearchParser/autocompleteParser.js b/src/libs/SearchParser/autocompleteParser.js index f6aaabf08111..c9e5bd870353 100644 --- a/src/libs/SearchParser/autocompleteParser.js +++ b/src/libs/SearchParser/autocompleteParser.js @@ -248,35 +248,36 @@ function peg$parse(input, options) { var peg$c62 = "purchasecurrency"; var peg$c63 = "purchase-currency"; var peg$c64 = "columns"; - var peg$c65 = "per-diem"; - var peg$c66 = "drafts"; - var peg$c67 = "draft"; - var peg$c68 = "original-amount"; - var peg$c69 = "tax"; - var peg$c70 = "policy-name"; - var peg$c71 = "bank-account"; - var peg$c72 = "long-report-id"; - var peg$c73 = "exported-to"; - var peg$c74 = "exchange-rate"; - var peg$c75 = "reimbursable-total"; - var peg$c76 = "non-reimbursable-total"; - var peg$c77 = "group-from"; - var peg$c78 = "group-expenses"; - var peg$c79 = "group-total"; - var peg$c80 = "group-card"; - var peg$c81 = "group-feed"; - var peg$c82 = "group-bank-account"; - var peg$c83 = "group-withdrawn"; - var peg$c84 = "group-withdrawal-id"; - var peg$c85 = "group-category"; - var peg$c86 = "!="; - var peg$c87 = ">="; - var peg$c88 = ">"; - var peg$c89 = "<="; - var peg$c90 = "<"; - var peg$c91 = "\u201C"; - var peg$c92 = "\u201D"; - var peg$c93 = "\""; + var peg$c65 = "view"; + var peg$c66 = "per-diem"; + var peg$c67 = "drafts"; + var peg$c68 = "draft"; + var peg$c69 = "original-amount"; + var peg$c70 = "tax"; + var peg$c71 = "policy-name"; + var peg$c72 = "bank-account"; + var peg$c73 = "long-report-id"; + var peg$c74 = "exported-to"; + var peg$c75 = "exchange-rate"; + var peg$c76 = "reimbursable-total"; + var peg$c77 = "non-reimbursable-total"; + var peg$c78 = "group-from"; + var peg$c79 = "group-expenses"; + var peg$c80 = "group-total"; + var peg$c81 = "group-card"; + var peg$c82 = "group-feed"; + var peg$c83 = "group-bank-account"; + var peg$c84 = "group-withdrawn"; + var peg$c85 = "group-withdrawal-id"; + var peg$c86 = "group-category"; + var peg$c87 = "!="; + var peg$c88 = ">="; + var peg$c89 = ">"; + var peg$c90 = "<="; + var peg$c91 = "<"; + var peg$c92 = "\u201C"; + var peg$c93 = "\u201D"; + var peg$c94 = "\""; var peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; var peg$r1 = /^[:=]/; @@ -360,51 +361,52 @@ function peg$parse(input, options) { var peg$e65 = peg$literalExpectation("purchaseCurrency", true); var peg$e66 = peg$literalExpectation("purchase-currency", true); var peg$e67 = peg$literalExpectation("columns", true); - var peg$e68 = peg$literalExpectation("per-diem", true); - var peg$e69 = peg$literalExpectation("drafts", true); - var peg$e70 = peg$literalExpectation("draft", true); - var peg$e71 = peg$literalExpectation("original-amount", true); - var peg$e72 = peg$literalExpectation("tax", true); - var peg$e73 = peg$literalExpectation("policy-name", true); - var peg$e74 = peg$literalExpectation("bank-account", true); - var peg$e75 = peg$literalExpectation("long-report-id", true); - var peg$e76 = peg$literalExpectation("exported-to", true); - var peg$e77 = peg$literalExpectation("exchange-rate", true); - var peg$e78 = peg$literalExpectation("reimbursable-total", true); - var peg$e79 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e80 = peg$literalExpectation("group-from", true); - var peg$e81 = peg$literalExpectation("group-expenses", true); - var peg$e82 = peg$literalExpectation("group-total", true); - var peg$e83 = peg$literalExpectation("group-card", true); - var peg$e84 = peg$literalExpectation("group-feed", true); - var peg$e85 = peg$literalExpectation("group-bank-account", true); - var peg$e86 = peg$literalExpectation("group-withdrawn", true); - var peg$e87 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e88 = peg$literalExpectation("group-category", true); - var peg$e89 = peg$otherExpectation("operator"); - var peg$e90 = peg$classExpectation([":", "="], false, false); - var peg$e91 = peg$literalExpectation("!=", false); - var peg$e92 = peg$literalExpectation(">=", false); - var peg$e93 = peg$literalExpectation(">", false); - var peg$e94 = peg$literalExpectation("<=", false); - var peg$e95 = peg$literalExpectation("<", false); - var peg$e96 = peg$otherExpectation("word"); - var peg$e97 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e98 = peg$otherExpectation("whitespace"); - var peg$e99 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e100 = peg$otherExpectation("quote"); - var peg$e101 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e102 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e103 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e104 = peg$literalExpectation("\u201C", false); - var peg$e105 = peg$literalExpectation("\u201D", false); - var peg$e106 = peg$literalExpectation("\"", false); - var peg$e107 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e108 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e109 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e110 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e111 = peg$classExpectation([","], false, false); - var peg$e112 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e68 = peg$literalExpectation("view", true); + var peg$e69 = peg$literalExpectation("per-diem", true); + var peg$e70 = peg$literalExpectation("drafts", true); + var peg$e71 = peg$literalExpectation("draft", true); + var peg$e72 = peg$literalExpectation("original-amount", true); + var peg$e73 = peg$literalExpectation("tax", true); + var peg$e74 = peg$literalExpectation("policy-name", true); + var peg$e75 = peg$literalExpectation("bank-account", true); + var peg$e76 = peg$literalExpectation("long-report-id", true); + var peg$e77 = peg$literalExpectation("exported-to", true); + var peg$e78 = peg$literalExpectation("exchange-rate", true); + var peg$e79 = peg$literalExpectation("reimbursable-total", true); + var peg$e80 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e81 = peg$literalExpectation("group-from", true); + var peg$e82 = peg$literalExpectation("group-expenses", true); + var peg$e83 = peg$literalExpectation("group-total", true); + var peg$e84 = peg$literalExpectation("group-card", true); + var peg$e85 = peg$literalExpectation("group-feed", true); + var peg$e86 = peg$literalExpectation("group-bank-account", true); + var peg$e87 = peg$literalExpectation("group-withdrawn", true); + var peg$e88 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e89 = peg$literalExpectation("group-category", true); + var peg$e90 = peg$otherExpectation("operator"); + var peg$e91 = peg$classExpectation([":", "="], false, false); + var peg$e92 = peg$literalExpectation("!=", false); + var peg$e93 = peg$literalExpectation(">=", false); + var peg$e94 = peg$literalExpectation(">", false); + var peg$e95 = peg$literalExpectation("<=", false); + var peg$e96 = peg$literalExpectation("<", false); + var peg$e97 = peg$otherExpectation("word"); + var peg$e98 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e99 = peg$otherExpectation("whitespace"); + var peg$e100 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e101 = peg$otherExpectation("quote"); + var peg$e102 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e103 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e104 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e105 = peg$literalExpectation("\u201C", false); + var peg$e106 = peg$literalExpectation("\u201D", false); + var peg$e107 = peg$literalExpectation("\"", false); + var peg$e108 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e109 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e110 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e111 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e112 = peg$classExpectation([","], false, false); + var peg$e113 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); var peg$f0 = function(ranges) { return { autocomplete, ranges }; }; var peg$f1 = function(filters) { return filters.filter(Boolean).flat(); }; @@ -514,60 +516,61 @@ function peg$parse(input, options) { var peg$f50 = function() {return "is"; }; var peg$f51 = function() {return "purchaseAmount"}; var peg$f52 = function() {return "purchaseCurrency"}; - var peg$f53 = function() { + var peg$f53 = function() { isColumnsContext = true; return "columns"; }; - var peg$f54 = function() { return isColumnsContext; }; - var peg$f55 = function() { return "perDiem"; }; - var peg$f56 = function() { return "drafts"; }; - var peg$f57 = function() { return "originalamount"; }; - var peg$f58 = function() { return "taxAmount"; }; - var peg$f59 = function() { return "taxrate"; }; - var peg$f60 = function() { return "policyname"; }; - var peg$f61 = function() { return "withdrawalID"; }; - var peg$f62 = function() { return "bankAccount"; }; - var peg$f63 = function() { return "reportID"; }; - var peg$f64 = function() { return "base62ReportID"; }; - var peg$f65 = function() { return "exportedto"; }; - var peg$f66 = function() { return "exchangeRate"; }; - var peg$f67 = function() { return "reimbursableTotal"; }; - var peg$f68 = function() { return "nonReimbursableTotal"; }; - var peg$f69 = function() { return "groupFrom"; }; - var peg$f70 = function() { return "groupExpenses"; }; - var peg$f71 = function() { return "groupTotal"; }; - var peg$f72 = function() { return "groupCard"; }; - var peg$f73 = function() { return "groupFeed"; }; - var peg$f74 = function() { return "groupBankAccount"; }; - var peg$f75 = function() { return "groupWithdrawn"; }; - var peg$f76 = function() { return "groupWithdrawalID"; }; - var peg$f77 = function() { return "groupCategory"; }; - var peg$f78 = function() { return "eq"; }; - var peg$f79 = function() { return "neq"; }; - var peg$f80 = function() { return "gte"; }; - var peg$f81 = function() { return "gt"; }; - var peg$f82 = function() { return "lte"; }; - var peg$f83 = function() { return "lt"; }; - var peg$f84 = function(o) { + var peg$f54 = function() {return "view"}; + var peg$f55 = function() { return isColumnsContext; }; + var peg$f56 = function() { return "perDiem"; }; + var peg$f57 = function() { return "drafts"; }; + var peg$f58 = function() { return "originalamount"; }; + var peg$f59 = function() { return "taxAmount"; }; + var peg$f60 = function() { return "taxrate"; }; + var peg$f61 = function() { return "policyname"; }; + var peg$f62 = function() { return "withdrawalID"; }; + var peg$f63 = function() { return "bankAccount"; }; + var peg$f64 = function() { return "reportID"; }; + var peg$f65 = function() { return "base62ReportID"; }; + var peg$f66 = function() { return "exportedto"; }; + var peg$f67 = function() { return "exchangeRate"; }; + var peg$f68 = function() { return "reimbursableTotal"; }; + var peg$f69 = function() { return "nonReimbursableTotal"; }; + var peg$f70 = function() { return "groupFrom"; }; + var peg$f71 = function() { return "groupExpenses"; }; + var peg$f72 = function() { return "groupTotal"; }; + var peg$f73 = function() { return "groupCard"; }; + var peg$f74 = function() { return "groupFeed"; }; + var peg$f75 = function() { return "groupBankAccount"; }; + var peg$f76 = function() { return "groupWithdrawn"; }; + var peg$f77 = function() { return "groupWithdrawalID"; }; + var peg$f78 = function() { return "groupCategory"; }; + var peg$f79 = function() { return "eq"; }; + var peg$f80 = function() { return "neq"; }; + var peg$f81 = function() { return "gte"; }; + var peg$f82 = function() { return "gt"; }; + var peg$f83 = function() { return "lte"; }; + var peg$f84 = function() { return "lt"; }; + var peg$f85 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found } isColumnsContext = false; return o; }; - var peg$f85 = function(chars) { return chars.join("").trim(); }; - var peg$f86 = function() { + var peg$f86 = function(chars) { return chars.join("").trim(); }; + var peg$f87 = function() { isColumnsContext = false; return "and"; }; - var peg$f87 = function() { return expectingNestedQuote; }; - var peg$f88 = function(start, inner, end) { //handle no-breaking space + var peg$f88 = function() { return expectingNestedQuote; }; + var peg$f89 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f89 = function(start) {return "“"}; - var peg$f90 = function(start) {return "”"}; - var peg$f91 = function(start) {return "\""}; - var peg$f92 = function(start, inner, end) { + var peg$f90 = function(start) {return "“"}; + var peg$f91 = function(start) {return "”"}; + var peg$f92 = function(start) {return "\""}; + var peg$f93 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; var peg$currPos = options.peg$currPos | 0; @@ -2270,12 +2273,32 @@ function peg$parse(input, options) { return s0; } + function peg$parseview() { + var s0, s1; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 4); + if (s1.toLowerCase() === peg$c65) { + peg$currPos += 4; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e68); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f54(); + } + s0 = s1; + + return s0; + } + function peg$parsevalues() { var s0, s1, s2; s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f54(); + s1 = peg$f55(); if (s1) { s1 = undefined; } else { @@ -2377,11 +2400,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c65) { + if (s1.toLowerCase() === peg$c66) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e68); } + if (peg$silentFails === 0) { peg$fail(peg$e69); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2396,7 +2419,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f55(); + s0 = peg$f56(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2414,19 +2437,19 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c66) { + if (s1.toLowerCase() === peg$c67) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e69); } + if (peg$silentFails === 0) { peg$fail(peg$e70); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c67) { + if (s1.toLowerCase() === peg$c68) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e70); } + if (peg$silentFails === 0) { peg$fail(peg$e71); } } } if (s1 !== peg$FAILED) { @@ -2442,7 +2465,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f56(); + s0 = peg$f57(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2460,11 +2483,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c68) { + if (s1.toLowerCase() === peg$c69) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e71); } + if (peg$silentFails === 0) { peg$fail(peg$e72); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2479,7 +2502,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f57(); + s0 = peg$f58(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2497,11 +2520,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c69) { + if (s1.toLowerCase() === peg$c70) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e72); } + if (peg$silentFails === 0) { peg$fail(peg$e73); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2516,7 +2539,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f58(); + s0 = peg$f59(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2553,7 +2576,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f59(); + s0 = peg$f60(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2571,11 +2594,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c70) { + if (s1.toLowerCase() === peg$c71) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e73); } + if (peg$silentFails === 0) { peg$fail(peg$e74); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2590,7 +2613,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f60(); + s0 = peg$f61(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2627,7 +2650,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f61(); + s0 = peg$f62(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2645,11 +2668,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c71) { + if (s1.toLowerCase() === peg$c72) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e74); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2664,7 +2687,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f62(); + s0 = peg$f63(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2682,11 +2705,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c72) { + if (s1.toLowerCase() === peg$c73) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } + if (peg$silentFails === 0) { peg$fail(peg$e76); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2701,7 +2724,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f63(); + s0 = peg$f64(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2738,7 +2761,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f64(); + s0 = peg$f65(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2756,11 +2779,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c73) { + if (s1.toLowerCase() === peg$c74) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e76); } + if (peg$silentFails === 0) { peg$fail(peg$e77); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2775,7 +2798,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f65(); + s0 = peg$f66(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2793,11 +2816,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c74) { + if (s1.toLowerCase() === peg$c75) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2812,7 +2835,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f66(); + s0 = peg$f67(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2830,11 +2853,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c76) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2849,7 +2872,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f67(); + s0 = peg$f68(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2867,11 +2890,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c76) { + if (s1.toLowerCase() === peg$c77) { peg$currPos += 22; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2886,7 +2909,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f68(); + s0 = peg$f69(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2904,11 +2927,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c77) { + if (s1.toLowerCase() === peg$c78) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2923,7 +2946,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f69(); + s0 = peg$f70(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2941,11 +2964,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c78) { + if (s1.toLowerCase() === peg$c79) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2960,7 +2983,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f70(); + s0 = peg$f71(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2978,11 +3001,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c80) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2997,7 +3020,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f71(); + s0 = peg$f72(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3015,11 +3038,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c80) { + if (s1.toLowerCase() === peg$c81) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3034,7 +3057,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f72(); + s0 = peg$f73(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3052,11 +3075,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c82) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3071,7 +3094,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f73(); + s0 = peg$f74(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3089,11 +3112,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c82) { + if (s1.toLowerCase() === peg$c83) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3108,7 +3131,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f74(); + s0 = peg$f75(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3126,11 +3149,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3145,7 +3168,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f75(); + s0 = peg$f76(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3163,11 +3186,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c84) { + if (s1.toLowerCase() === peg$c85) { peg$currPos += 19; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3182,7 +3205,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f76(); + s0 = peg$f77(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3200,11 +3223,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c86) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3219,7 +3242,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f77(); + s0 = peg$f78(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3242,81 +3265,81 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f78(); + s1 = peg$f79(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c86) { - s1 = peg$c86; + if (input.substr(peg$currPos, 2) === peg$c87) { + s1 = peg$c87; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f79(); + s1 = peg$f80(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c87) { - s1 = peg$c87; + if (input.substr(peg$currPos, 2) === peg$c88) { + s1 = peg$c88; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f80(); + s1 = peg$f81(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c88; + s1 = peg$c89; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f81(); + s1 = peg$f82(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c89) { - s1 = peg$c89; + if (input.substr(peg$currPos, 2) === peg$c90) { + s1 = peg$c90; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f82(); + s1 = peg$f83(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c90; + s1 = peg$c91; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e96); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f83(); + s1 = peg$f84(); } s0 = s1; } @@ -3327,7 +3350,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } return s0; @@ -3340,7 +3363,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f84(s1); + s1 = peg$f85(s1); } s0 = s1; @@ -3358,7 +3381,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { @@ -3368,7 +3391,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } } } else { @@ -3376,13 +3399,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f85(s1); + s1 = peg$f86(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e97); } } return s0; @@ -3394,7 +3417,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f86(); + s1 = peg$f87(); s0 = s1; return s0; @@ -3410,7 +3433,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -3419,12 +3442,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } return s0; } @@ -3434,7 +3457,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f87(); + s1 = peg$f88(); if (s1) { s1 = undefined; } else { @@ -3471,7 +3494,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -3480,7 +3503,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } } s2 = input.charAt(peg$currPos); @@ -3488,7 +3511,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s2 !== peg$FAILED) { s3 = []; @@ -3497,7 +3520,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -3506,7 +3529,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } } s4 = input.charAt(peg$currPos); @@ -3514,7 +3537,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s4 !== peg$FAILED) { s5 = []; @@ -3523,7 +3546,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -3532,11 +3555,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } } peg$savedPos = s0; - s0 = peg$f88(s1, s3, s5); + s0 = peg$f89(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3548,7 +3571,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } return s0; @@ -3565,7 +3588,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -3574,7 +3597,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } } s2 = input.charAt(peg$currPos); @@ -3582,7 +3605,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s2 !== peg$FAILED) { s3 = []; @@ -3591,7 +3614,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -3607,15 +3630,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c91; + s6 = peg$c92; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f89(s1); + s4 = peg$f90(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3638,15 +3661,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c92; + s6 = peg$c93; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f90(s1); + s4 = peg$f91(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3669,15 +3692,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c93; + s6 = peg$c94; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f91(s1); + s4 = peg$f92(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3696,7 +3719,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -3712,15 +3735,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c91; + s6 = peg$c92; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f89(s1); + s4 = peg$f90(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3743,15 +3766,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c92; + s6 = peg$c93; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f90(s1); + s4 = peg$f91(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3774,15 +3797,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c93; + s6 = peg$c94; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f91(s1); + s4 = peg$f92(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3798,7 +3821,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f92(s1, s3, s4); + s0 = peg$f93(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3810,7 +3833,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } return s0; @@ -3825,7 +3848,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3863,7 +3886,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -3872,7 +3895,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } } s2 = []; @@ -3881,7 +3904,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -3890,7 +3913,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } } s3 = []; @@ -3899,7 +3922,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -3908,7 +3931,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } } s4 = peg$parseoperator(); @@ -3927,7 +3950,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -3936,7 +3959,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } } s2 = peg$currPos; @@ -3983,7 +4006,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } } } @@ -3999,7 +4022,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s0 === peg$FAILED) { s0 = peg$currPos; @@ -4028,7 +4051,7 @@ function peg$parse(input, options) { // List fields where you cannot prefix it with "-" to negate it const nonNegatableKeys = new Set([ - "type", "keyword", "groupCurrency", "groupBy", "columns", "limit" + "type", "keyword", "groupCurrency", "groupBy", "columns", "limit", "view" ]); diff --git a/src/libs/SearchParser/autocompleteParser.peggy b/src/libs/SearchParser/autocompleteParser.peggy index 4a6aee643960..a50efdbcdbdd 100644 --- a/src/libs/SearchParser/autocompleteParser.peggy +++ b/src/libs/SearchParser/autocompleteParser.peggy @@ -23,7 +23,7 @@ // List fields where you cannot prefix it with "-" to negate it const nonNegatableKeys = new Set([ - "type", "keyword", "groupCurrency", "groupBy", "columns", "limit" + "type", "keyword", "groupCurrency", "groupBy", "columns", "limit", "view" ]); } diff --git a/src/libs/SearchParser/baseRules.peggy b/src/libs/SearchParser/baseRules.peggy index 9a45ae86831f..0b160800cf36 100644 --- a/src/libs/SearchParser/baseRules.peggy +++ b/src/libs/SearchParser/baseRules.peggy @@ -80,10 +80,11 @@ has = "has"i {return "has"; } is = "is"i {return "is"; } purchaseAmount = "purchaseAmount"i / "purchase-amount"i {return "purchaseAmount"} purchaseCurrency = "purchaseCurrency"i / "purchase-currency"i {return "purchaseCurrency"} -columns = "columns"i { +columns = "columns"i { isColumnsContext = true; return "columns"; } +view = "view"i {return "view"} // Value transformation rules values diff --git a/src/libs/SearchParser/searchParser.js b/src/libs/SearchParser/searchParser.js index 70ba1be54694..9a38ff83617c 100644 --- a/src/libs/SearchParser/searchParser.js +++ b/src/libs/SearchParser/searchParser.js @@ -249,35 +249,36 @@ function peg$parse(input, options) { var peg$c62 = "purchasecurrency"; var peg$c63 = "purchase-currency"; var peg$c64 = "columns"; - var peg$c65 = "per-diem"; - var peg$c66 = "drafts"; - var peg$c67 = "draft"; - var peg$c68 = "original-amount"; - var peg$c69 = "tax"; - var peg$c70 = "policy-name"; - var peg$c71 = "bank-account"; - var peg$c72 = "long-report-id"; - var peg$c73 = "exported-to"; - var peg$c74 = "exchange-rate"; - var peg$c75 = "reimbursable-total"; - var peg$c76 = "non-reimbursable-total"; - var peg$c77 = "group-from"; - var peg$c78 = "group-expenses"; - var peg$c79 = "group-total"; - var peg$c80 = "group-card"; - var peg$c81 = "group-feed"; - var peg$c82 = "group-bank-account"; - var peg$c83 = "group-withdrawn"; - var peg$c84 = "group-withdrawal-id"; - var peg$c85 = "group-category"; - var peg$c86 = "!="; - var peg$c87 = ">="; - var peg$c88 = ">"; - var peg$c89 = "<="; - var peg$c90 = "<"; - var peg$c91 = "\u201C"; - var peg$c92 = "\u201D"; - var peg$c93 = "\""; + var peg$c65 = "view"; + var peg$c66 = "per-diem"; + var peg$c67 = "drafts"; + var peg$c68 = "draft"; + var peg$c69 = "original-amount"; + var peg$c70 = "tax"; + var peg$c71 = "policy-name"; + var peg$c72 = "bank-account"; + var peg$c73 = "long-report-id"; + var peg$c74 = "exported-to"; + var peg$c75 = "exchange-rate"; + var peg$c76 = "reimbursable-total"; + var peg$c77 = "non-reimbursable-total"; + var peg$c78 = "group-from"; + var peg$c79 = "group-expenses"; + var peg$c80 = "group-total"; + var peg$c81 = "group-card"; + var peg$c82 = "group-feed"; + var peg$c83 = "group-bank-account"; + var peg$c84 = "group-withdrawn"; + var peg$c85 = "group-withdrawal-id"; + var peg$c86 = "group-category"; + var peg$c87 = "!="; + var peg$c88 = ">="; + var peg$c89 = ">"; + var peg$c90 = "<="; + var peg$c91 = "<"; + var peg$c92 = "\u201C"; + var peg$c93 = "\u201D"; + var peg$c94 = "\""; var peg$r0 = /^[^ \t\r\n\xA0]/; var peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; @@ -364,51 +365,52 @@ function peg$parse(input, options) { var peg$e67 = peg$literalExpectation("purchaseCurrency", true); var peg$e68 = peg$literalExpectation("purchase-currency", true); var peg$e69 = peg$literalExpectation("columns", true); - var peg$e70 = peg$literalExpectation("per-diem", true); - var peg$e71 = peg$literalExpectation("drafts", true); - var peg$e72 = peg$literalExpectation("draft", true); - var peg$e73 = peg$literalExpectation("original-amount", true); - var peg$e74 = peg$literalExpectation("tax", true); - var peg$e75 = peg$literalExpectation("policy-name", true); - var peg$e76 = peg$literalExpectation("bank-account", true); - var peg$e77 = peg$literalExpectation("long-report-id", true); - var peg$e78 = peg$literalExpectation("exported-to", true); - var peg$e79 = peg$literalExpectation("exchange-rate", true); - var peg$e80 = peg$literalExpectation("reimbursable-total", true); - var peg$e81 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e82 = peg$literalExpectation("group-from", true); - var peg$e83 = peg$literalExpectation("group-expenses", true); - var peg$e84 = peg$literalExpectation("group-total", true); - var peg$e85 = peg$literalExpectation("group-card", true); - var peg$e86 = peg$literalExpectation("group-feed", true); - var peg$e87 = peg$literalExpectation("group-bank-account", true); - var peg$e88 = peg$literalExpectation("group-withdrawn", true); - var peg$e89 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e90 = peg$literalExpectation("group-category", true); - var peg$e91 = peg$otherExpectation("operator"); - var peg$e92 = peg$classExpectation([":", "="], false, false); - var peg$e93 = peg$literalExpectation("!=", false); - var peg$e94 = peg$literalExpectation(">=", false); - var peg$e95 = peg$literalExpectation(">", false); - var peg$e96 = peg$literalExpectation("<=", false); - var peg$e97 = peg$literalExpectation("<", false); - var peg$e98 = peg$otherExpectation("word"); - var peg$e99 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e100 = peg$otherExpectation("whitespace"); - var peg$e101 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e102 = peg$otherExpectation("quote"); - var peg$e103 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e104 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e105 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e106 = peg$literalExpectation("\u201C", false); - var peg$e107 = peg$literalExpectation("\u201D", false); - var peg$e108 = peg$literalExpectation("\"", false); - var peg$e109 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e110 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e111 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e112 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e113 = peg$classExpectation([","], false, false); - var peg$e114 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + var peg$e70 = peg$literalExpectation("view", true); + var peg$e71 = peg$literalExpectation("per-diem", true); + var peg$e72 = peg$literalExpectation("drafts", true); + var peg$e73 = peg$literalExpectation("draft", true); + var peg$e74 = peg$literalExpectation("original-amount", true); + var peg$e75 = peg$literalExpectation("tax", true); + var peg$e76 = peg$literalExpectation("policy-name", true); + var peg$e77 = peg$literalExpectation("bank-account", true); + var peg$e78 = peg$literalExpectation("long-report-id", true); + var peg$e79 = peg$literalExpectation("exported-to", true); + var peg$e80 = peg$literalExpectation("exchange-rate", true); + var peg$e81 = peg$literalExpectation("reimbursable-total", true); + var peg$e82 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e83 = peg$literalExpectation("group-from", true); + var peg$e84 = peg$literalExpectation("group-expenses", true); + var peg$e85 = peg$literalExpectation("group-total", true); + var peg$e86 = peg$literalExpectation("group-card", true); + var peg$e87 = peg$literalExpectation("group-feed", true); + var peg$e88 = peg$literalExpectation("group-bank-account", true); + var peg$e89 = peg$literalExpectation("group-withdrawn", true); + var peg$e90 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e91 = peg$literalExpectation("group-category", true); + var peg$e92 = peg$otherExpectation("operator"); + var peg$e93 = peg$classExpectation([":", "="], false, false); + var peg$e94 = peg$literalExpectation("!=", false); + var peg$e95 = peg$literalExpectation(">=", false); + var peg$e96 = peg$literalExpectation(">", false); + var peg$e97 = peg$literalExpectation("<=", false); + var peg$e98 = peg$literalExpectation("<", false); + var peg$e99 = peg$otherExpectation("word"); + var peg$e100 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e101 = peg$otherExpectation("whitespace"); + var peg$e102 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e103 = peg$otherExpectation("quote"); + var peg$e104 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e105 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e106 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e107 = peg$literalExpectation("\u201C", false); + var peg$e108 = peg$literalExpectation("\u201D", false); + var peg$e109 = peg$literalExpectation("\"", false); + var peg$e110 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e111 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e112 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e113 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e114 = peg$classExpectation([","], false, false); + var peg$e115 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); var peg$f0 = function(filters) { return applyDefaults(filters); }; var peg$f1 = function(head, tail) { @@ -541,60 +543,61 @@ function peg$parse(input, options) { var peg$f51 = function() {return "is"; }; var peg$f52 = function() {return "purchaseAmount"}; var peg$f53 = function() {return "purchaseCurrency"}; - var peg$f54 = function() { + var peg$f54 = function() { isColumnsContext = true; return "columns"; }; - var peg$f55 = function() { return isColumnsContext; }; - var peg$f56 = function() { return "perDiem"; }; - var peg$f57 = function() { return "drafts"; }; - var peg$f58 = function() { return "originalamount"; }; - var peg$f59 = function() { return "taxAmount"; }; - var peg$f60 = function() { return "taxrate"; }; - var peg$f61 = function() { return "policyname"; }; - var peg$f62 = function() { return "withdrawalID"; }; - var peg$f63 = function() { return "bankAccount"; }; - var peg$f64 = function() { return "reportID"; }; - var peg$f65 = function() { return "base62ReportID"; }; - var peg$f66 = function() { return "exportedto"; }; - var peg$f67 = function() { return "exchangeRate"; }; - var peg$f68 = function() { return "reimbursableTotal"; }; - var peg$f69 = function() { return "nonReimbursableTotal"; }; - var peg$f70 = function() { return "groupFrom"; }; - var peg$f71 = function() { return "groupExpenses"; }; - var peg$f72 = function() { return "groupTotal"; }; - var peg$f73 = function() { return "groupCard"; }; - var peg$f74 = function() { return "groupFeed"; }; - var peg$f75 = function() { return "groupBankAccount"; }; - var peg$f76 = function() { return "groupWithdrawn"; }; - var peg$f77 = function() { return "groupWithdrawalID"; }; - var peg$f78 = function() { return "groupCategory"; }; - var peg$f79 = function() { return "eq"; }; - var peg$f80 = function() { return "neq"; }; - var peg$f81 = function() { return "gte"; }; - var peg$f82 = function() { return "gt"; }; - var peg$f83 = function() { return "lte"; }; - var peg$f84 = function() { return "lt"; }; - var peg$f85 = function(o) { + var peg$f55 = function() {return "view"}; + var peg$f56 = function() { return isColumnsContext; }; + var peg$f57 = function() { return "perDiem"; }; + var peg$f58 = function() { return "drafts"; }; + var peg$f59 = function() { return "originalamount"; }; + var peg$f60 = function() { return "taxAmount"; }; + var peg$f61 = function() { return "taxrate"; }; + var peg$f62 = function() { return "policyname"; }; + var peg$f63 = function() { return "withdrawalID"; }; + var peg$f64 = function() { return "bankAccount"; }; + var peg$f65 = function() { return "reportID"; }; + var peg$f66 = function() { return "base62ReportID"; }; + var peg$f67 = function() { return "exportedto"; }; + var peg$f68 = function() { return "exchangeRate"; }; + var peg$f69 = function() { return "reimbursableTotal"; }; + var peg$f70 = function() { return "nonReimbursableTotal"; }; + var peg$f71 = function() { return "groupFrom"; }; + var peg$f72 = function() { return "groupExpenses"; }; + var peg$f73 = function() { return "groupTotal"; }; + var peg$f74 = function() { return "groupCard"; }; + var peg$f75 = function() { return "groupFeed"; }; + var peg$f76 = function() { return "groupBankAccount"; }; + var peg$f77 = function() { return "groupWithdrawn"; }; + var peg$f78 = function() { return "groupWithdrawalID"; }; + var peg$f79 = function() { return "groupCategory"; }; + var peg$f80 = function() { return "eq"; }; + var peg$f81 = function() { return "neq"; }; + var peg$f82 = function() { return "gte"; }; + var peg$f83 = function() { return "gt"; }; + var peg$f84 = function() { return "lte"; }; + var peg$f85 = function() { return "lt"; }; + var peg$f86 = function(o) { if (nameOperator) { expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found } isColumnsContext = false; return o; }; - var peg$f86 = function(chars) { return chars.join("").trim(); }; - var peg$f87 = function() { + var peg$f87 = function(chars) { return chars.join("").trim(); }; + var peg$f88 = function() { isColumnsContext = false; return "and"; }; - var peg$f88 = function() { return expectingNestedQuote; }; - var peg$f89 = function(start, inner, end) { //handle no-breaking space + var peg$f89 = function() { return expectingNestedQuote; }; + var peg$f90 = function(start, inner, end) { //handle no-breaking space return [...start, '"', ...inner, '"', ...end].join(""); }; - var peg$f90 = function(start) {return "“"}; - var peg$f91 = function(start) {return "”"}; - var peg$f92 = function(start) {return "\""}; - var peg$f93 = function(start, inner, end) { + var peg$f91 = function(start) {return "“"}; + var peg$f92 = function(start) {return "”"}; + var peg$f93 = function(start) {return "\""}; + var peg$f94 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); }; var peg$currPos = options.peg$currPos | 0; @@ -1243,6 +1246,9 @@ function peg$parse(input, options) { s1 = peg$parsecolumns(); if (s1 === peg$FAILED) { s1 = peg$parselimit(); + if (s1 === peg$FAILED) { + s1 = peg$parseview(); + } } } } @@ -2454,12 +2460,32 @@ function peg$parse(input, options) { return s0; } + function peg$parseview() { + var s0, s1; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 4); + if (s1.toLowerCase() === peg$c65) { + peg$currPos += 4; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e70); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f55(); + } + s0 = s1; + + return s0; + } + function peg$parsevalues() { var s0, s1, s2; s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f55(); + s1 = peg$f56(); if (s1) { s1 = undefined; } else { @@ -2561,11 +2587,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c65) { + if (s1.toLowerCase() === peg$c66) { peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e70); } + if (peg$silentFails === 0) { peg$fail(peg$e71); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2580,7 +2606,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f56(); + s0 = peg$f57(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2598,19 +2624,19 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c66) { + if (s1.toLowerCase() === peg$c67) { peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e71); } + if (peg$silentFails === 0) { peg$fail(peg$e72); } } if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c67) { + if (s1.toLowerCase() === peg$c68) { peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e72); } + if (peg$silentFails === 0) { peg$fail(peg$e73); } } } if (s1 !== peg$FAILED) { @@ -2626,7 +2652,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f57(); + s0 = peg$f58(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2644,11 +2670,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c68) { + if (s1.toLowerCase() === peg$c69) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e73); } + if (peg$silentFails === 0) { peg$fail(peg$e74); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2663,7 +2689,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f58(); + s0 = peg$f59(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2681,11 +2707,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c69) { + if (s1.toLowerCase() === peg$c70) { peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e74); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2700,7 +2726,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f59(); + s0 = peg$f60(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2737,7 +2763,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f60(); + s0 = peg$f61(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2755,11 +2781,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c70) { + if (s1.toLowerCase() === peg$c71) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } + if (peg$silentFails === 0) { peg$fail(peg$e76); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2774,7 +2800,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f61(); + s0 = peg$f62(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2811,7 +2837,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f62(); + s0 = peg$f63(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2829,11 +2855,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c71) { + if (s1.toLowerCase() === peg$c72) { peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e76); } + if (peg$silentFails === 0) { peg$fail(peg$e77); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2848,7 +2874,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f63(); + s0 = peg$f64(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2866,11 +2892,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c72) { + if (s1.toLowerCase() === peg$c73) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2885,7 +2911,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f64(); + s0 = peg$f65(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2922,7 +2948,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f65(); + s0 = peg$f66(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2940,11 +2966,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c73) { + if (s1.toLowerCase() === peg$c74) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2959,7 +2985,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f66(); + s0 = peg$f67(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2977,11 +3003,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c74) { + if (s1.toLowerCase() === peg$c75) { peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2996,7 +3022,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f67(); + s0 = peg$f68(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3014,11 +3040,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c75) { + if (s1.toLowerCase() === peg$c76) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3033,7 +3059,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f68(); + s0 = peg$f69(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3051,11 +3077,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c76) { + if (s1.toLowerCase() === peg$c77) { peg$currPos += 22; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3070,7 +3096,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f69(); + s0 = peg$f70(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3088,11 +3114,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c77) { + if (s1.toLowerCase() === peg$c78) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3107,7 +3133,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f70(); + s0 = peg$f71(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3125,11 +3151,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c78) { + if (s1.toLowerCase() === peg$c79) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3144,7 +3170,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f71(); + s0 = peg$f72(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3162,11 +3188,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c79) { + if (s1.toLowerCase() === peg$c80) { peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3181,7 +3207,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f72(); + s0 = peg$f73(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3199,11 +3225,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c80) { + if (s1.toLowerCase() === peg$c81) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3218,7 +3244,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f73(); + s0 = peg$f74(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3236,11 +3262,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c81) { + if (s1.toLowerCase() === peg$c82) { peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3255,7 +3281,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f74(); + s0 = peg$f75(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3273,11 +3299,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c82) { + if (s1.toLowerCase() === peg$c83) { peg$currPos += 18; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3292,7 +3318,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f75(); + s0 = peg$f76(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3310,11 +3336,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c83) { + if (s1.toLowerCase() === peg$c84) { peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3329,7 +3355,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f76(); + s0 = peg$f77(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3347,11 +3373,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c84) { + if (s1.toLowerCase() === peg$c85) { peg$currPos += 19; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3366,7 +3392,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f77(); + s0 = peg$f78(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3384,11 +3410,11 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c85) { + if (s1.toLowerCase() === peg$c86) { peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -3403,7 +3429,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f78(); + s0 = peg$f79(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3426,81 +3452,81 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e93); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f79(); + s1 = peg$f80(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c86) { - s1 = peg$c86; + if (input.substr(peg$currPos, 2) === peg$c87) { + s1 = peg$c87; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f80(); + s1 = peg$f81(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c87) { - s1 = peg$c87; + if (input.substr(peg$currPos, 2) === peg$c88) { + s1 = peg$c88; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f81(); + s1 = peg$f82(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c88; + s1 = peg$c89; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e96); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f82(); + s1 = peg$f83(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c89) { - s1 = peg$c89; + if (input.substr(peg$currPos, 2) === peg$c90) { + s1 = peg$c90; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e97); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f83(); + s1 = peg$f84(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c90; + s1 = peg$c91; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f84(); + s1 = peg$f85(); } s0 = s1; } @@ -3511,7 +3537,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e92); } } return s0; @@ -3524,7 +3550,7 @@ function peg$parse(input, options) { s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f85(s1); + s1 = peg$f86(s1); } s0 = s1; @@ -3542,7 +3568,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { @@ -3552,7 +3578,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } } } else { @@ -3560,13 +3586,13 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f86(s1); + s1 = peg$f87(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } } return s0; @@ -3578,7 +3604,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f87(); + s1 = peg$f88(); s0 = s1; return s0; @@ -3594,7 +3620,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -3603,12 +3629,12 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } } peg$silentFails--; s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } return s0; } @@ -3618,7 +3644,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f88(); + s1 = peg$f89(); if (s1) { s1 = undefined; } else { @@ -3655,7 +3681,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -3664,7 +3690,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } } s2 = input.charAt(peg$currPos); @@ -3672,7 +3698,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s2 !== peg$FAILED) { s3 = []; @@ -3681,7 +3707,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -3690,7 +3716,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } } s4 = input.charAt(peg$currPos); @@ -3698,7 +3724,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s4 !== peg$FAILED) { s5 = []; @@ -3707,7 +3733,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -3716,11 +3742,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } } peg$savedPos = s0; - s0 = peg$f89(s1, s3, s5); + s0 = peg$f90(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3732,7 +3758,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } return s0; @@ -3749,7 +3775,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -3758,7 +3784,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } } s2 = input.charAt(peg$currPos); @@ -3766,7 +3792,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s2 !== peg$FAILED) { s3 = []; @@ -3775,7 +3801,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -3791,15 +3817,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c91; + s6 = peg$c92; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f90(s1); + s4 = peg$f91(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3822,15 +3848,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c92; + s6 = peg$c93; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f91(s1); + s4 = peg$f92(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3853,15 +3879,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c93; + s6 = peg$c94; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f92(s1); + s4 = peg$f93(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3880,7 +3906,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -3896,15 +3922,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c91; + s6 = peg$c92; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f90(s1); + s4 = peg$f91(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3927,15 +3953,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c92; + s6 = peg$c93; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f91(s1); + s4 = peg$f92(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3958,15 +3984,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c93; + s6 = peg$c94; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f92(s1); + s4 = peg$f93(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -3982,7 +4008,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f93(s1, s3, s4); + s0 = peg$f94(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3994,7 +4020,7 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } return s0; @@ -4009,7 +4035,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4047,7 +4073,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4056,7 +4082,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } } s2 = []; @@ -4065,7 +4091,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -4074,7 +4100,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } } s3 = []; @@ -4083,7 +4109,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -4092,7 +4118,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } } s4 = peg$parseoperator(); @@ -4111,7 +4137,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4120,7 +4146,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } } s2 = peg$currPos; @@ -4167,7 +4193,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } } } @@ -4183,7 +4209,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s0 === peg$FAILED) { s0 = peg$currPos; @@ -4229,13 +4255,14 @@ function peg$parse(input, options) { status: "", sortBy: "date", sortOrder: "desc", + view: "table", }; let rawFilterList = []; let userProvidedSortBy = false; // List fields where you cannot prefix it with "-" to negate it const nonNegatableKeys = new Set([ - "type", "keyword", "groupCurrency", "groupBy", "columns", "limit" + "type", "keyword", "groupCurrency", "groupBy", "columns", "limit", "view" ]); function isDefaultSortValue(sortBy) { diff --git a/src/libs/SearchParser/searchParser.peggy b/src/libs/SearchParser/searchParser.peggy index 8b680cc865e6..6fe5e1ceb344 100644 --- a/src/libs/SearchParser/searchParser.peggy +++ b/src/libs/SearchParser/searchParser.peggy @@ -49,13 +49,14 @@ status: "", sortBy: "date", sortOrder: "desc", + view: "table", }; let rawFilterList = []; let userProvidedSortBy = false; // List fields where you cannot prefix it with "-" to negate it const nonNegatableKeys = new Set([ - "type", "keyword", "groupCurrency", "groupBy", "columns", "limit" + "type", "keyword", "groupCurrency", "groupBy", "columns", "limit", "view" ]); function isDefaultSortValue(sortBy) { @@ -262,7 +263,7 @@ filterKey return k; } -defaultKey "default key" = @(type / status / sortBy / sortOrder / policyID / groupBy / columns / limit) +defaultKey "default key" = @(type / status / sortBy / sortOrder / policyID / groupBy / columns / limit / view) identifier = (","+)? parts:(values / quotedString / alphanumeric)|1.., ","+| empty:(","+)? { diff --git a/src/libs/SearchQueryUtils.ts b/src/libs/SearchQueryUtils.ts index 6c030db4568a..4c6db1f6594a 100644 --- a/src/libs/SearchQueryUtils.ts +++ b/src/libs/SearchQueryUtils.ts @@ -473,7 +473,15 @@ function buildSearchQueryString(queryJSON?: SearchQueryJSON) { const queryParts: string[] = []; const defaultQueryJSON = buildSearchQueryJSON(''); + // Check if view was explicitly set by the user (exists in rawFilterList) + const wasViewExplicitlySet = queryJSON?.rawFilterList?.some((filter) => filter.key === CONST.SEARCH.SYNTAX_ROOT_KEYS.VIEW); + for (const [, key] of Object.entries(CONST.SEARCH.SYNTAX_ROOT_KEYS)) { + // Skip view if it wasn't explicitly set by the user + if (key === CONST.SEARCH.SYNTAX_ROOT_KEYS.VIEW && !wasViewExplicitlySet) { + continue; + } + const existingFieldValue = queryJSON?.[key]; const queryFieldValue = existingFieldValue ?? defaultQueryJSON?.[key]; diff --git a/tests/unit/Search/SearchQueryUtilsTest.ts b/tests/unit/Search/SearchQueryUtilsTest.ts index 9156a32ddfed..67aff2e48b3b 100644 --- a/tests/unit/Search/SearchQueryUtilsTest.ts +++ b/tests/unit/Search/SearchQueryUtilsTest.ts @@ -41,6 +41,7 @@ jest.mock('@libs/PersonalDetailsUtils', () => { // The default query is generated by default values from parser, which are defined in grammar. // We don't want to test or mock the grammar and the parser, so we're simply defining this string directly here. +// Note: view:table is not included because it's only added when explicitly set by the user. const defaultQuery = `type:expense sortBy:date sortOrder:desc`; describe('SearchQueryUtils', () => { diff --git a/tests/unit/Search/SearchUIUtilsTest.ts b/tests/unit/Search/SearchUIUtilsTest.ts index fc2a946e2cf3..46bd6e0a8773 100644 --- a/tests/unit/Search/SearchUIUtilsTest.ts +++ b/tests/unit/Search/SearchUIUtilsTest.ts @@ -2410,6 +2410,7 @@ describe('SearchUIUtils', () => { status: '', sortBy: CONST.SEARCH.TABLE_COLUMNS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: CONST.SEARCH.VIEW.TABLE, hash: 12345, flatFilters: [], inputQuery: 'type:expense groupBy:category', diff --git a/tests/unit/SearchParserTest.ts b/tests/unit/SearchParserTest.ts index 8683737ad4ce..31c8f96bf551 100644 --- a/tests/unit/SearchParserTest.ts +++ b/tests/unit/SearchParserTest.ts @@ -11,6 +11,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: null, }, }, @@ -21,6 +22,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -59,6 +61,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -97,6 +100,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -143,6 +147,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'eq', left: 'category', @@ -157,6 +162,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'eq', left: 'keyword', @@ -171,6 +177,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'eq', left: 'keyword', @@ -185,6 +192,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'eq', left: 'tag', @@ -199,6 +207,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'eq', left: 'keyword', @@ -213,6 +222,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -243,6 +253,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -273,6 +284,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -303,6 +315,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -373,6 +386,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -395,6 +409,7 @@ const tests = [ status: '', sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: null, }, }, @@ -405,6 +420,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -435,6 +451,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -489,6 +506,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.WITHDRAWAL_TYPE, @@ -503,6 +521,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.WITHDRAWAL_ID, @@ -517,6 +536,7 @@ const tests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.WITHDRAWN, @@ -531,6 +551,7 @@ const tests = [ status: '', sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.IS, @@ -545,6 +566,7 @@ const tests = [ status: '', sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.IS, @@ -559,6 +581,7 @@ const tests = [ status: '', sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.IS, @@ -573,6 +596,7 @@ const tests = [ status: '', sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.IS, @@ -587,6 +611,7 @@ const tests = [ status: '', sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.HAS, @@ -601,6 +626,7 @@ const tests = [ status: '', sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.HAS, @@ -615,6 +641,7 @@ const tests = [ status: '', sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.HAS, @@ -629,6 +656,7 @@ const tests = [ status: '', sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.IS, @@ -643,6 +671,7 @@ const tests = [ status: '', sortBy: CONST.SEARCH.SYNTAX_FILTER_KEYS.DATE, sortOrder: CONST.SEARCH.SORT_ORDER.DESC, + view: 'table', filters: { operator: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, left: CONST.SEARCH.SYNTAX_FILTER_KEYS.IS, @@ -664,6 +693,7 @@ const keywordTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'eq', left: 'keyword', @@ -678,6 +708,7 @@ const keywordTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'eq', left: 'keyword', @@ -692,6 +723,7 @@ const keywordTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'eq', left: 'keyword', @@ -706,6 +738,7 @@ const keywordTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'eq', left: 'keyword', @@ -720,6 +753,7 @@ const keywordTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -750,6 +784,7 @@ const keywordTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'and', left: { @@ -772,6 +807,7 @@ const keywordTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'eq', left: 'expenseType', @@ -786,6 +822,7 @@ const keywordTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', columns: ['originalamount', 'taxAmount', 'base62ReportID'], filters: null, }, @@ -797,6 +834,7 @@ const keywordTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', columns: 'taxAmount', filters: null, }, @@ -808,6 +846,7 @@ const keywordTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', filters: { operator: 'eq', left: 'merchant', @@ -822,6 +861,7 @@ const keywordTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', columns: ['groupBankAccount', 'groupFrom'], filters: { left: 'action', @@ -830,6 +870,55 @@ const keywordTests = [ }, }, }, + // View parameter tests + { + query: 'type:expense view:bar', + expected: { + type: 'expense', + status: CONST.SEARCH.STATUS.EXPENSE.ALL, + sortBy: 'date', + sortOrder: 'desc', + view: 'bar', + filters: null, + }, + }, + { + query: 'type:expense view:table', + expected: { + type: 'expense', + status: CONST.SEARCH.STATUS.EXPENSE.ALL, + sortBy: 'date', + sortOrder: 'desc', + view: 'table', + filters: null, + }, + }, + { + query: 'type:expense status:all', // default view should be 'table' + expected: { + type: 'expense', + status: CONST.SEARCH.STATUS.EXPENSE.ALL, + sortBy: 'date', + sortOrder: 'desc', + view: 'table', + filters: null, + }, + }, + { + query: 'type:expense view:bar category:travel', + expected: { + type: 'expense', + status: CONST.SEARCH.STATUS.EXPENSE.ALL, + sortBy: 'date', + sortOrder: 'desc', + view: 'bar', + filters: { + operator: 'eq', + left: 'category', + right: 'travel', + }, + }, + }, ]; const limitTests = [ @@ -841,6 +930,7 @@ const limitTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', limit: '10', filters: null, }, @@ -853,6 +943,7 @@ const limitTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', limit: '50', filters: { operator: 'eq', @@ -869,6 +960,7 @@ const limitTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', limit: '25', filters: null, }, @@ -881,6 +973,7 @@ const limitTests = [ status: CONST.SEARCH.STATUS.EXPENSE.ALL, sortBy: 'date', sortOrder: 'desc', + view: 'table', limit: '100', filters: { operator: 'eq', diff --git a/tests/unit/useSearchHighlightAndScrollTest.ts b/tests/unit/useSearchHighlightAndScrollTest.ts index 30ac57245929..76e3a3b27f4f 100644 --- a/tests/unit/useSearchHighlightAndScrollTest.ts +++ b/tests/unit/useSearchHighlightAndScrollTest.ts @@ -54,6 +54,7 @@ describe('useSearchHighlightAndScroll', () => { hash: 123, recentSearchHash: 456, similarSearchHash: 789, + view: 'table', }, searchKey: undefined, shouldCalculateTotals: false,