Skip to content

Commit 8a5a2c3

Browse files
committed
Add Nested annotation when defined in YAML
1 parent a24222c commit 8a5a2c3

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

src/ResourceGenerator.php

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Symfony\CS\FileCacheManager;
2020
use Symfony\CS\Fixer;
2121
use Symfony\CS\FixerInterface;
22+
use WyriHaximus\ApiClient\Annotations\Nested;
2223
use WyriHaximus\ApiClient\Resource\ResourceInterface;
2324

2425
class ResourceGenerator
@@ -260,6 +261,16 @@ protected function createBaseClass(array $yaml): string
260261
$class = $factory->class($yaml['class'])
261262
->implement($yaml['class'] . 'Interface')
262263
->makeAbstract();
264+
265+
if (isset($yaml['nested'])) {
266+
$nestedResources = [];
267+
foreach ($yaml['nested'] as $key => $resource) {
268+
$nestedResources[] = $key . '="' . $resource . '"';
269+
}
270+
$docBlock = "/**\r\n * @Nested(" . implode(', ', $nestedResources) . ")\r\n */";
271+
$class->setDocComment($docBlock);
272+
}
273+
263274
$class->addStmt(
264275
new Node\Stmt\TraitUse([
265276
new Node\Name('TransportAwareTrait')
@@ -275,13 +286,19 @@ protected function createBaseClass(array $yaml): string
275286
$class->addStmt($this->createMethod($factory, $type, $name, $details));
276287
}
277288

278-
$node = $factory->namespace($yaml['namespace'])
289+
$stmt = $factory->namespace($yaml['namespace']);
290+
if (isset($yaml['nested'])) {
291+
$stmt = $stmt->addStmt(
292+
$factory->use(Nested::class)
293+
);
294+
}
295+
$stmt
279296
->addStmt($factory->use('WyriHaximus\ApiClient\Resource\TransportAwareTrait'))
280297
->addStmt($class)
281-
282-
->getNode()
283298
;
284299

300+
$node = $stmt->getNode();
301+
285302
$prettyPrinter = new PrettyPrinter\Standard();
286303
return $prettyPrinter->prettyPrintFile([
287304
$node

0 commit comments

Comments
 (0)