From 5716077f9949b5e3bbf0d06be553bfb86c86641a Mon Sep 17 00:00:00 2001 From: Sergei Zharinov Date: Fri, 23 Apr 2021 14:24:18 +0400 Subject: [PATCH] refactor: Cache moo lexer instances (#9697) --- lib/manager/bazel/extract.ts | 6 +++--- lib/manager/cake/index.ts | 5 ++--- lib/manager/gradle-lite/tokenizer.ts | 5 ++--- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/manager/bazel/extract.ts b/lib/manager/bazel/extract.ts index 5c42fade649e22..9a20d2699d916c 100644 --- a/lib/manager/bazel/extract.ts +++ b/lib/manager/bazel/extract.ts @@ -53,7 +53,7 @@ function parseUrl(urlString: string): UrlParsedResult | null { return null; } -const dummyLexer = { +const lexer = moo.states({ main: { lineComment: { match: /#.*?$/ }, leftParen: { match: '(' }, @@ -103,11 +103,11 @@ const dummyLexer = { stringFinish: { match: "'", pop: 1 }, char: { match: /[^]/, lineBreaks: true }, }, -}; +}); function parseContent(content: string): string[] { - const lexer = moo.states(dummyLexer); lexer.reset(content); + let balance = 0; let def: null | string = null; diff --git a/lib/manager/cake/index.ts b/lib/manager/cake/index.ts index 74415c75d33449..50d04007f97a92 100644 --- a/lib/manager/cake/index.ts +++ b/lib/manager/cake/index.ts @@ -10,7 +10,7 @@ export const defaultConfig = { fileMatch: ['\\.cake$'], }; -const lexerStates = { +const lexer = moo.states({ main: { lineComment: { match: /\/\/.*?$/ }, multiLineComment: { match: /\/\*[^]*?\*\//, lineBreaks: true }, @@ -23,7 +23,7 @@ const lexerStates = { }, unknown: { match: /[^]/, lineBreaks: true }, }, -}; +}); function parseDependencyLine(line: string): PackageDependency | null { try { @@ -54,7 +54,6 @@ function parseDependencyLine(line: string): PackageDependency | null { export function extractPackageFile(content: string): PackageFile { const deps = []; - const lexer = moo.states(lexerStates); lexer.reset(content); let token = lexer.next(); while (token) { diff --git a/lib/manager/gradle-lite/tokenizer.ts b/lib/manager/gradle-lite/tokenizer.ts index 904cf29b161111..b37722fae2b873 100644 --- a/lib/manager/gradle-lite/tokenizer.ts +++ b/lib/manager/gradle-lite/tokenizer.ts @@ -19,7 +19,7 @@ const escapedChars = { }, }; -export const rawLexer = { +const lexer = moo.states({ // Top-level Groovy lexemes main: { [TokenType.LineComment]: { match: /\/\/.*?$/ }, @@ -104,7 +104,7 @@ export const rawLexer = { [TokenType.RightBrace]: { match: '}', pop: 1 }, [TokenType.UnknownLexeme]: { match: /[^]/, lineBreaks: true }, }, -}; +}); /* Turn UnknownLexeme chars to UnknownFragment strings @@ -213,7 +213,6 @@ function filterTokens({ type }: Token): boolean { } export function extractRawTokens(input: string): Token[] { - const lexer = moo.states(rawLexer); lexer.reset(input); return Array.from(lexer).map( ({ type, offset, value }) => ({ type, offset, value } as Token)