@@ -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