17
17
use phpDocumentor \Guides \Compiler \CompilerPass ;
18
18
use phpDocumentor \Guides \Nodes \DocumentNode ;
19
19
use phpDocumentor \Guides \Nodes \DocumentTree \DocumentEntryNode ;
20
+ use phpDocumentor \Guides \Nodes \DocumentTree \EntryNode ;
20
21
use phpDocumentor \Guides \Nodes \DocumentTree \ExternalEntryNode ;
21
22
use phpDocumentor \Guides \Nodes \Menu \ExternalMenuEntryNode ;
22
23
use phpDocumentor \Guides \Nodes \Menu \InternalMenuEntryNode ;
@@ -118,10 +119,11 @@ private function getMenuEntryWithChildren(CompilerContext $compilerContext, Menu
118
119
return $ newMenuEntry ;
119
120
}
120
121
122
+ /** @param EntryNode<DocumentEntryNode|ExternalEntryNode>|ExternalEntryNode $entryNode */
121
123
private function addSubEntries (
122
124
CompilerContext $ compilerContext ,
123
125
MenuEntryNode $ sectionMenuEntry ,
124
- DocumentEntryNode | ExternalEntryNode $ entryNode ,
126
+ EntryNode $ entryNode ,
125
127
int $ currentLevel ,
126
128
int $ maxDepth ,
127
129
): void {
@@ -138,26 +140,40 @@ private function addSubEntries(
138
140
}
139
141
140
142
foreach ($ entryNode ->getMenuEntries () as $ subEntryNode ) {
141
- if ($ subEntryNode instanceof DocumentEntryNode) {
142
- $ subMenuEntry = new InternalMenuEntryNode (
143
- $ subEntryNode ->getFile (),
144
- $ subEntryNode ->getTitle (),
145
- [],
146
- false ,
147
- $ currentLevel ,
148
- '' ,
149
- );
150
- $ sectionMenuEntry ->addMenuEntry ($ subMenuEntry );
151
- $ this ->addSubEntries ($ compilerContext , $ subMenuEntry , $ subEntryNode , $ currentLevel + 1 , $ maxDepth );
152
- } elseif ($ subEntryNode instanceof ExternalEntryNode) {
153
- $ subMenuEntry = new ExternalMenuEntryNode (
154
- $ subEntryNode ->getValue (),
155
- TitleNode::fromString ($ subEntryNode ->getTitle ()),
156
- $ currentLevel ,
157
- );
158
- $ sectionMenuEntry ->addMenuEntry ($ subMenuEntry );
159
- $ this ->addSubEntries ($ compilerContext , $ subMenuEntry , $ subEntryNode , $ currentLevel + 1 , $ maxDepth );
160
- }
143
+ $ subMenuEntry = match ($ subEntryNode ::class) {
144
+ DocumentEntryNode::class => $ this ->createInternalMenuEntry ($ subEntryNode , $ currentLevel ),
145
+ ExternalEntryNode::class => $ this ->createExternalMenuEntry ($ subEntryNode , $ currentLevel ),
146
+ };
147
+
148
+ $ sectionMenuEntry ->addMenuEntry ($ subMenuEntry );
149
+ $ this ->addSubEntries (
150
+ $ compilerContext ,
151
+ $ subMenuEntry ,
152
+ $ subEntryNode ,
153
+ $ currentLevel + 1 ,
154
+ $ maxDepth ,
155
+ );
161
156
}
162
157
}
158
+
159
+ private function createInternalMenuEntry (DocumentEntryNode $ subEntryNode , int $ currentLevel ): InternalMenuEntryNode
160
+ {
161
+ return new InternalMenuEntryNode (
162
+ $ subEntryNode ->getFile (),
163
+ $ subEntryNode ->getTitle (),
164
+ [],
165
+ false ,
166
+ $ currentLevel ,
167
+ '' ,
168
+ );
169
+ }
170
+
171
+ private function createExternalMenuEntry (ExternalEntryNode $ subEntryNode , int $ currentLevel ): ExternalMenuEntryNode
172
+ {
173
+ return new ExternalMenuEntryNode (
174
+ $ subEntryNode ->getValue (),
175
+ TitleNode::fromString ($ subEntryNode ->getTitle ()),
176
+ $ currentLevel ,
177
+ );
178
+ }
163
179
}
0 commit comments