Skip to content

Commit 7b8530c

Browse files
committed
small refactor for DRY code
1 parent 30007d9 commit 7b8530c

1 file changed

Lines changed: 14 additions & 17 deletions

File tree

src/slang-utils/create-parser.ts

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -53,38 +53,35 @@ const milestoneVersions = [
5353
(milestone) => maxSatisfying(supportedVersions, `<${milestone}`)!
5454
);
5555

56+
function parserAndOutput(
57+
text: string,
58+
version: string
59+
): { parser: Parser; parseOutput: ParseOutput } {
60+
const parser = Parser.create(version);
61+
return {
62+
parser,
63+
parseOutput: parser.parseNonterminal(NonterminalKind.SourceUnit, text)
64+
};
65+
}
66+
5667
export function createParser(
5768
text: string,
5869
options: ParserOptions<AstNode>
5970
): { parser: Parser; parseOutput: ParseOutput } {
6071
const compiler = maxSatisfying(supportedVersions, options.compiler);
61-
if (compiler) {
62-
const parser = Parser.create(compiler);
63-
return {
64-
parser,
65-
parseOutput: parser.parseNonterminal(NonterminalKind.SourceUnit, text)
66-
};
67-
}
72+
if (compiler) return parserAndOutput(text, compiler);
6873

6974
const inferredRanges: string[] = LanguageFacts.inferLanguageVersions(text);
70-
const parser = Parser.create(inferredRanges[inferredRanges.length - 1]);
71-
const result = {
72-
parser,
73-
parseOutput: parser.parseNonterminal(NonterminalKind.SourceUnit, text)
74-
};
7575

76+
let result = parserAndOutput(text, inferredRanges[inferredRanges.length - 1]);
7677
if (result.parseOutput.isValid()) return result;
7778

7879
const inferredMilestones = milestoneVersions.filter((milestone) =>
7980
inferredRanges.includes(milestone)
8081
);
8182

8283
for (let i = inferredMilestones.length - 1; i >= 0; i -= 1) {
83-
result.parser = Parser.create(inferredMilestones[i]);
84-
result.parseOutput = result.parser.parseNonterminal(
85-
NonterminalKind.SourceUnit,
86-
text
87-
);
84+
result = parserAndOutput(text, inferredMilestones[i]);
8885
if (result.parseOutput.isValid()) break;
8986
}
9087

0 commit comments

Comments
 (0)