Skip to content

Commit

Permalink
rustdoc-search: replace TAB/NL/LF with SP first
Browse files Browse the repository at this point in the history
This way, most of the parsing code doesn't need to be designed to handle
it, since they should always be treated exactly the same anyhow.
  • Loading branch information
notriddle committed Nov 29, 2023
1 parent 93f1711 commit 930cba8
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 23 deletions.
16 changes: 6 additions & 10 deletions src/librustdoc/html/static/js/search.js
Original file line number Diff line number Diff line change
Expand Up @@ -287,10 +287,6 @@ function initSearch(rawSearchIndex) {
}
}

function isWhitespace(c) {
return " \t\n\r".indexOf(c) !== -1;
}

function isSpecialStartCharacter(c) {
return "<\"".indexOf(c) !== -1;
}
Expand Down Expand Up @@ -408,7 +404,7 @@ function initSearch(rawSearchIndex) {
* @return {boolean}
*/
function isPathSeparator(c) {
return c === ":" || isWhitespace(c);
return c === ":" || c === " ";
}

/**
Expand All @@ -425,7 +421,7 @@ function initSearch(rawSearchIndex) {
const c = parserState.userQuery[pos - 1];
if (c === lookingFor) {
return true;
} else if (!isWhitespace(c)) {
} else if (c !== " ") {
break;
}
pos -= 1;
Expand Down Expand Up @@ -454,7 +450,7 @@ function initSearch(rawSearchIndex) {
function skipWhitespace(parserState) {
while (parserState.pos < parserState.userQuery.length) {
const c = parserState.userQuery[parserState.pos];
if (!isWhitespace(c)) {
if (c !== " ") {
break;
}
parserState.pos += 1;
Expand Down Expand Up @@ -599,7 +595,7 @@ function initSearch(rawSearchIndex) {
} else {
while (parserState.pos + 1 < parserState.length) {
const next_c = parserState.userQuery[parserState.pos + 1];
if (!isWhitespace(next_c)) {
if (next_c !== " ") {
break;
}
parserState.pos += 1;
Expand Down Expand Up @@ -953,7 +949,7 @@ function initSearch(rawSearchIndex) {
query.literalSearch = false;
foundStopChar = true;
continue;
} else if (isWhitespace(c)) {
} else if (c === " ") {
skipWhitespace(parserState);
continue;
}
Expand Down Expand Up @@ -1113,7 +1109,7 @@ function initSearch(rawSearchIndex) {
}
}
}
userQuery = userQuery.trim();
userQuery = userQuery.trim().replace(/\r|\n|\t/g, " ");
const parserState = {
length: userQuery.length,
pos: 0,
Expand Down
9 changes: 9 additions & 0 deletions tests/rustdoc-js-std/parser-errors.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,15 @@ const PARSED = [
userQuery: "a:: ::b",
error: "Unexpected `:: ::`",
},
{
query: "a::\t::b",
elems: [],
foundElems: 0,
original: "a:: ::b",
returned: [],
userQuery: "a:: ::b",
error: "Unexpected `:: ::`",
},
{
query: "a::b::",
elems: [],
Expand Down
22 changes: 11 additions & 11 deletions tests/rustdoc-js-std/parser-separators.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const PARSED = [
query: 'aaaaaa b',
elems: [
{
name: 'aaaaaa\tb',
name: 'aaaaaa b',
fullPath: ['aaaaaa', 'b'],
pathWithoutLast: ['aaaaaa'],
pathLast: 'b',
Expand All @@ -14,9 +14,9 @@ const PARSED = [
},
],
foundElems: 1,
original: "aaaaaa b",
original: "aaaaaa b",
returned: [],
userQuery: "aaaaaa b",
userQuery: "aaaaaa b",
error: null,
},
{
Expand All @@ -40,9 +40,9 @@ const PARSED = [
},
],
foundElems: 2,
original: "aaaaaa, b",
original: "aaaaaa, b",
returned: [],
userQuery: "aaaaaa, b",
userQuery: "aaaaaa, b",
error: null,
},
{
Expand Down Expand Up @@ -93,7 +93,7 @@ const PARSED = [
query: 'a\tb',
elems: [
{
name: 'a\tb',
name: 'a b',
fullPath: ['a', 'b'],
pathWithoutLast: ['a'],
pathLast: 'b',
Expand All @@ -102,9 +102,9 @@ const PARSED = [
},
],
foundElems: 1,
original: "a\tb",
original: "a b",
returned: [],
userQuery: "a\tb",
userQuery: "a b",
error: null,
},
{
Expand Down Expand Up @@ -176,7 +176,7 @@ const PARSED = [
pathLast: 'a',
generics: [
{
name: 'b\tc',
name: 'b c',
fullPath: ['b', 'c'],
pathWithoutLast: ['b'],
pathLast: 'c',
Expand All @@ -187,9 +187,9 @@ const PARSED = [
},
],
foundElems: 1,
original: "a<b\tc>",
original: "a<b c>",
returned: [],
userQuery: "a<b\tc>",
userQuery: "a<b c>",
error: null,
},
];
4 changes: 2 additions & 2 deletions tests/rustdoc-js-std/parser-weird-queries.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ const PARSED = [
query: 'mod\t:',
elems: [],
foundElems: 0,
original: 'mod\t:',
original: 'mod :',
returned: [],
userQuery: 'mod\t:',
userQuery: 'mod :',
error: "Unexpected `:` (expected path after type filter `mod:`)",
},
];

0 comments on commit 930cba8

Please sign in to comment.