From 321b728e9947746201b05e1ee5c4186d7156fe4d Mon Sep 17 00:00:00 2001 From: Knut Wannheden Date: Mon, 23 Sep 2024 23:18:47 +0200 Subject: [PATCH] Add Parser.Builder --- openrewrite/src/core/parser.ts | 4 ++-- openrewrite/src/javascript/parser.ts | 13 +++++++++++++ openrewrite/test/core/tree.test.ts | 4 ++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/openrewrite/src/core/parser.ts b/openrewrite/src/core/parser.ts index 599dbdc..ad0cce3 100644 --- a/openrewrite/src/core/parser.ts +++ b/openrewrite/src/core/parser.ts @@ -109,7 +109,7 @@ export abstract class Parser { } export namespace Parser { - abstract class Builder { + export abstract class Builder { protected _sourceFileType: any; get sourceFileType(): any { @@ -120,7 +120,7 @@ export namespace Parser { } } -function requirePrintEqualsInput( +export function requirePrintEqualsInput( parser: Parser, sourceFile: SourceFile, parserInput: ParserInput, diff --git a/openrewrite/src/javascript/parser.ts b/openrewrite/src/javascript/parser.ts index 46ac707..a4142bd 100644 --- a/openrewrite/src/javascript/parser.ts +++ b/openrewrite/src/javascript/parser.ts @@ -6,6 +6,7 @@ import {Expression, JRightPadded, Space, Statement} from "../java/tree"; import {Node} from "typescript"; export class JavaScriptParser extends Parser { + parseInputs(inputs: Iterable, relativeTo: string | null, ctx: ExecutionContext): Iterable { const inputsArray = Array.from(inputs); const compilerOptions: ts.CompilerOptions = { @@ -69,6 +70,18 @@ export class JavaScriptParser extends Parser { sourcePathFromSourceText(prefix: string, sourceCode: string): string { return prefix + "/source.js"; } + + static builder(): JavaScriptParser.Builder { + return new JavaScriptParser.Builder(); + } +} + +export namespace JavaScriptParser { + export class Builder extends Parser.Builder { + build(): JavaScriptParser { + return new JavaScriptParser(); + } + } } class ParserVisitor { diff --git a/openrewrite/test/core/tree.test.ts b/openrewrite/test/core/tree.test.ts index b663b96..e167edb 100644 --- a/openrewrite/test/core/tree.test.ts +++ b/openrewrite/test/core/tree.test.ts @@ -19,13 +19,13 @@ describe('tree utils', () => { }); test('parse', () => { - const parser = new JavaScriptParser(); + const parser = JavaScriptParser.builder().build(); const [sourceFile] = parser.parseInputs([new ParserInput('foo.ts', null, true, () => Buffer.from('1', 'utf8'))], null, new InMemoryExecutionContext()); console.log(sourceFile); }); test('parse strings', () => { - const parser = new JavaScriptParser(); + const parser = JavaScriptParser.builder().build(); const [sourceFile] = parser.parseStrings('const c = 1;'); console.log(sourceFile); });