lexer: Remove match-at dependency, use RegExp (#1447)

* lexer: Remove `match-at` dependency, use RegExp

* chore(package): update flow-bin to version 0.75.0

* Fix flow error

* Remove unused flow libs

* Minor fix

* Throw an error when `RegExp.exec` jumps
This commit is contained in:
ylemkimon
2018-06-28 03:13:27 +09:00
committed by GitHub
parent 12dcb05209
commit 518379aed5
10 changed files with 37 additions and 46 deletions

View File

@@ -27,7 +27,9 @@ exports[`A begin/end parser should grab \\arraystretch 1`] = `
"end": 37,
"lexer": {
"input": "\\\\def\\\\arraystretch{1.5}\\\\begin{matrix}a&b\\\\\\\\c&d\\\\end{matrix}",
"pos": 56
"tokenRegex": {
"lastIndex": 56
}
},
"start": 36
},
@@ -56,7 +58,9 @@ exports[`A begin/end parser should grab \\arraystretch 1`] = `
"end": 39,
"lexer": {
"input": "\\\\def\\\\arraystretch{1.5}\\\\begin{matrix}a&b\\\\\\\\c&d\\\\end{matrix}",
"pos": 56
"tokenRegex": {
"lastIndex": 56
}
},
"start": 38
},
@@ -87,7 +91,9 @@ exports[`A begin/end parser should grab \\arraystretch 1`] = `
"end": 42,
"lexer": {
"input": "\\\\def\\\\arraystretch{1.5}\\\\begin{matrix}a&b\\\\\\\\c&d\\\\end{matrix}",
"pos": 56
"tokenRegex": {
"lastIndex": 56
}
},
"start": 41
},
@@ -116,7 +122,9 @@ exports[`A begin/end parser should grab \\arraystretch 1`] = `
"end": 44,
"lexer": {
"input": "\\\\def\\\\arraystretch{1.5}\\\\begin{matrix}a&b\\\\\\\\c&d\\\\end{matrix}",
"pos": 56
"tokenRegex": {
"lastIndex": 56
}
},
"start": 43
},

View File

@@ -285,9 +285,9 @@ describe("Lexer:", function() {
describe("#_innerLex", function() {
it("rejects lone surrogate char", function() {
expect("\udcba").toFailWithParseError(
expect("\udcba ").toFailWithParseError(
"Unexpected character: '\udcba' at position 1:" +
" \udcba\u0332");
" \udcba\u0332 ");
});
it("rejects lone backslash at end of input", function() {
expect("\\").toFailWithParseError(

View File

@@ -23,9 +23,17 @@ const typeFirstCompare = (a, b) => {
}
};
const regExpReplacer = (key, value) => {
return value instanceof RegExp ? {lastIndex: value.lastIndex} : value;
};
const serializer = {
print(val) {
return stringify(val, {cmp: typeFirstCompare, space: ' '});
return stringify(val, {
cmp: typeFirstCompare,
space: ' ',
replacer: regExpReplacer,
});
},
test(val) {
// Leave strings (e.g. XML) to other serializers