Skip to content

Commit e136aac

Browse files
committed
Refactor cross-reference code lens generation to use pipeline-style helpers for clarity and maintainability
1 parent 3899349 commit e136aac

1 file changed

Lines changed: 47 additions & 21 deletions

File tree

src/parser/crossReferenceCodeLensService.ts

Lines changed: 47 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -82,29 +82,55 @@ export class CrossReferenceCodeLensService {
8282
sections: ParsedSection[],
8383
matchedModules: ModuleInterface[]
8484
): CrossReferenceCodeLensEntry[] {
85+
// Pipeline-style processing for clarity
8586
return this.filterModulesWithCrossReferences(matchedModules).flatMap(
8687
moduleConfig =>
87-
this.getBlocksWithCrossReferences(moduleConfig).flatMap(dslBlock =>
88-
dslBlock
89-
.childPatterns!.filter(pattern => pattern.crossReference)
90-
.flatMap(pattern => {
91-
const section = sections.find(
92-
s => s.section === dslBlock.blockName
93-
);
94-
if (!section) return [];
95-
return section.details
96-
.filter(detail => detail.name)
97-
.map(detail =>
98-
this.createCrossReferenceCodeLens(
99-
sections,
100-
dslBlock,
101-
pattern,
102-
detail
103-
)
104-
)
105-
.filter(Boolean) as CrossReferenceCodeLensEntry[];
106-
})
107-
)
88+
this.getCrossReferenceLensesForModule(sections, moduleConfig)
10889
);
10990
}
91+
92+
/**
93+
* Get all cross-reference code lens entries for a single module.
94+
*/
95+
private getCrossReferenceLensesForModule(
96+
sections: ParsedSection[],
97+
moduleConfig: ModuleInterface
98+
): CrossReferenceCodeLensEntry[] {
99+
return this.getBlocksWithCrossReferences(moduleConfig).flatMap(dslBlock =>
100+
this.getCrossReferenceLensesForBlock(sections, dslBlock)
101+
);
102+
}
103+
104+
/**
105+
* Get all cross-reference code lens entries for a single DSL block.
106+
*/
107+
private getCrossReferenceLensesForBlock(
108+
sections: ParsedSection[],
109+
dslBlock: DslBlock
110+
): CrossReferenceCodeLensEntry[] {
111+
if (!dslBlock.childPatterns) return [];
112+
return dslBlock.childPatterns
113+
.filter(pattern => pattern.crossReference)
114+
.flatMap(pattern =>
115+
this.getCrossReferenceLensesForPattern(sections, dslBlock, pattern)
116+
);
117+
}
118+
119+
/**
120+
* Get all cross-reference code lens entries for a single child pattern.
121+
*/
122+
private getCrossReferenceLensesForPattern(
123+
sections: ParsedSection[],
124+
dslBlock: DslBlock,
125+
pattern: ChildPattern
126+
): CrossReferenceCodeLensEntry[] {
127+
const section = sections.find(s => s.section === dslBlock.blockName);
128+
if (!section) return [];
129+
return section.details
130+
.filter(detail => detail.name)
131+
.map(detail =>
132+
this.createCrossReferenceCodeLens(sections, dslBlock, pattern, detail)
133+
)
134+
.filter(Boolean) as CrossReferenceCodeLensEntry[];
135+
}
110136
}

0 commit comments

Comments
 (0)