Skip to content

Commit a22e6eb

Browse files
committed
refactor: implement singleton pattern for ModuleParser instance
1 parent 4ff2e61 commit a22e6eb

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

src/parsers/moduleParser.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,16 @@ export function getAllAvailableConfigurations(): ModuleInterface[] {
4848
* to parse Ash DSL blocks in a structured way.
4949
*/
5050
export class ModuleParser implements Parser {
51+
private static instance: ModuleParser;
52+
private constructor() {}
53+
54+
static getInstance(): ModuleParser {
55+
if (!ModuleParser.instance) {
56+
ModuleParser.instance = new ModuleParser();
57+
}
58+
return ModuleParser.instance;
59+
}
60+
5161
parse(source: string): ParseResult {
5262
const availableConfigs = getAllAvailableConfigurations();
5363
// Pass 1: Find all use declarations
@@ -86,7 +96,7 @@ export class ModuleParser implements Parser {
8696
}
8797
}
8898

89-
export const moduleParser = new ModuleParser();
99+
export const moduleParser = ModuleParser.getInstance();
90100

91101
/**
92102
* Extract code lenses from matched modules and parsed sections.
@@ -162,7 +172,6 @@ export function extractCodeLenses(
162172
* Extract DSL modules and their blocks from source code
163173
* Uses a context-driven approach where all imported modules contribute to parsing
164174
*/
165-
// For testing only
166175
export function extractModules(
167176
source: string,
168177
matchedModules: ModuleInterface[]

0 commit comments

Comments
 (0)