Skip to content

Commit 6100e63

Browse files
Refactor package iteration by introducing forEachPackage helper in BmmSchemaCollection and updating writers for reuse.
1 parent 4aa6281 commit 6100e63

4 files changed

Lines changed: 28 additions & 48 deletions

File tree

src/BmmSchemaCollection.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Cadasto\OpenEHR\BMM\Helper\Collection;
88
use Cadasto\OpenEHR\BMM\Model\AbstractBmmClass;
9+
use Cadasto\OpenEHR\BMM\Model\BmmPackage;
910
use Cadasto\OpenEHR\BMM\Model\BmmSchema;
1011
use OpenEHR\BmmPublisher\Helper\ResourcesDir;
1112
use Psr\Log\LoggerInterface;
@@ -63,6 +64,30 @@ public function load(string $filename): void
6364
$this->schemas->add($schema);
6465
}
6566

67+
/**
68+
* Walk all packages (up to 3 levels deep) across all loaded schemas.
69+
*
70+
* @param callable(BmmPackage, BmmSchema, string): void $callback receives (package, schema, namePrefix)
71+
*/
72+
public function forEachPackage(callable $callback): void
73+
{
74+
/** @var BmmSchema $schema */
75+
foreach ($this->schemas as $schema) {
76+
/** @var BmmPackage $package */
77+
foreach ($schema->packages as $package) {
78+
$callback($package, $schema, '');
79+
/** @var BmmPackage $subPackage */
80+
foreach ($package->packages as $subPackage) {
81+
$callback($subPackage, $schema, $package->name . '.');
82+
/** @var BmmPackage $subSubPackage */
83+
foreach ($subPackage->packages as $subSubPackage) {
84+
$callback($subSubPackage, $schema, $package->name . '.' . $subPackage->name . '.');
85+
}
86+
}
87+
}
88+
}
89+
}
90+
6691
public function count(): int
6792
{
6893
return $this->schemas->count();

src/Writer/Asciidoc.php

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,8 @@ public static function outputDir(): string
4343

4444
public function __invoke(): void
4545
{
46-
$logger = $this->schemas->logger;
4746
Filesystem::assureDir(self::outputDir());
48-
/** @var BmmSchema $schema */
49-
foreach ($this->schemas as $schema) {
50-
/** @var BmmPackage $package */
51-
foreach ($schema->packages as $package) {
52-
$this->writePackage($package, $schema, '');
53-
/** @var BmmPackage $subPackage */
54-
foreach ($package->packages as $subPackage) {
55-
$this->writePackage($subPackage, $schema, $package->name . '.');
56-
/** @var BmmPackage $subSubPackage */
57-
foreach ($subPackage->packages as $subSubPackage) {
58-
$this->writePackage($subSubPackage, $schema, $package->name . '.' . $subPackage->name . '.');
59-
}
60-
}
61-
}
62-
}
47+
$this->schemas->forEachPackage($this->writePackage(...));
6348
}
6449

6550
private function writePackage(BmmPackage $package, BmmSchema $schema, string $namePrefix): void

src/Writer/BmmJsonSplit.php

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,8 @@ public static function outputDir(): string
2626

2727
public function __invoke(): void
2828
{
29-
$logger = $this->schemas->logger;
3029
Filesystem::assureDir(self::outputDir());
31-
/** @var BmmSchema $schema */
32-
foreach ($this->schemas as $schema) {
33-
/** @var BmmPackage $package */
34-
foreach ($schema->packages as $package) {
35-
$this->writePackage($package, $schema, '');
36-
/** @var BmmPackage $subPackage */
37-
foreach ($package->packages as $subPackage) {
38-
$this->writePackage($subPackage, $schema, $package->name . '.');
39-
/** @var BmmPackage $subSubPackage */
40-
foreach ($subPackage->packages as $subSubPackage) {
41-
$this->writePackage($subSubPackage, $schema, $package->name . '.' . $subPackage->name . '.');
42-
}
43-
}
44-
}
45-
}
30+
$this->schemas->forEachPackage($this->writePackage(...));
4631
}
4732

4833
private function writePackage(BmmPackage $package, BmmSchema $schema, string $namePrefix): void

src/Writer/PlantUml.php

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,8 @@ public static function outputDir(): string
3030

3131
public function __invoke(): void
3232
{
33-
$logger = $this->schemas->logger;
3433
Filesystem::assureDir(self::outputDir());
35-
/** @var BmmSchema $schema */
36-
foreach ($this->schemas as $schema) {
37-
/** @var BmmPackage $package */
38-
foreach ($schema->packages as $package) {
39-
$this->writePackage($package, $schema, '');
40-
/** @var BmmPackage $subPackage */
41-
foreach ($package->packages as $subPackage) {
42-
$this->writePackage($subPackage, $schema, $package->name . '.');
43-
/** @var BmmPackage $subSubPackage */
44-
foreach ($subPackage->packages as $subSubPackage) {
45-
$this->writePackage($subSubPackage, $schema, $package->name . '.' . $subPackage->name . '.');
46-
}
47-
}
48-
}
49-
}
34+
$this->schemas->forEachPackage($this->writePackage(...));
5035
}
5136

5237
private function writePackage(BmmPackage $package, BmmSchema $schema, string $namePrefix): void

0 commit comments

Comments
 (0)