Skip to content

Commit bef533f

Browse files
committed
Integrate compactor into module splitting
1 parent f68f0e5 commit bef533f

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

src/Writers/ModuleWriter.php

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,22 @@
22

33
namespace Spatie\TypeScriptTransformer\Writers;
44

5+
use Spatie\TypeScriptTransformer\Compactors\Compactor;
6+
use Spatie\TypeScriptTransformer\Compactors\ConfigCompactor;
57
use Spatie\TypeScriptTransformer\Structures\NamespacedType;
68
use Spatie\TypeScriptTransformer\Structures\TransformedType;
79
use Spatie\TypeScriptTransformer\Structures\TypesCollection;
10+
use Spatie\TypeScriptTransformer\TypeScriptTransformerConfig;
811

912
class ModuleWriter implements Writer
1013
{
14+
15+
protected Compactor $compactor;
16+
17+
public function __construct(TypeScriptTransformerConfig $config) {
18+
$this->compactor = new ConfigCompactor($config);
19+
}
20+
1121
public function format(TypesCollection $collection): string {
1222
$output = '';
1323

@@ -18,16 +28,23 @@ public function format(TypesCollection $collection): string {
1828
return strcmp($a->name, $b->name);
1929
});
2030

21-
$currentModuleNamespace = null;
31+
$currentModuleTsNamespace = null;
2232
/** @var NamespacedType[] $typesByNamespace */
2333
$typesByNamespace = [];
2434
foreach ($iterator as $type) {
2535
/** @var TransformedType $type */
2636
if ($type->isInline) {
2737
continue;
2838
}
29-
if ($currentModuleNamespace === null) {
30-
$currentModuleNamespace = trim(NamespacedType::namespace($type->reflection->name), '\\');
39+
40+
if ($currentModuleTsNamespace === null) {
41+
$currentModuleTsNamespace =
42+
$this->compactor->removePrefix(
43+
trim(
44+
NamespacedType::namespace($type->reflection->name),
45+
'\\'
46+
)
47+
);
3148
}
3249

3350
$output .= "export {$type->toString()}" . PHP_EOL;
@@ -42,8 +59,11 @@ public function format(TypesCollection $collection): string {
4259

4360
$import = '';
4461
foreach ($typesByNamespace as $namespace => $types) {
45-
$namespace = trim($namespace, '\\');
46-
if ($namespace === $currentModuleNamespace) {
62+
$tsNamespace = $this->compactor->removePrefix(
63+
trim($namespace, '\\')
64+
);
65+
66+
if ($tsNamespace === $currentModuleTsNamespace) {
4767
continue;
4868
}
4969
$import .= 'import {';
@@ -54,9 +74,9 @@ public function format(TypesCollection $collection): string {
5474
$types
5575
)
5676
);
57-
$commonPrefix = NamespacedType::commonPrefix($namespace, $currentModuleNamespace);
58-
$thatRest = ltrim(substr($namespace, strlen($commonPrefix)), '\\');
59-
$currentRest = ltrim(substr($currentModuleNamespace, strlen($commonPrefix)), '\\');
77+
$commonPrefix = NamespacedType::commonPrefix($tsNamespace, $currentModuleTsNamespace);
78+
$thatRest = ltrim(substr($tsNamespace, strlen($commonPrefix)), '\\');
79+
$currentRest = ltrim(substr($currentModuleTsNamespace, strlen($commonPrefix)), '\\');
6080
$sourceModulePath =
6181
join(
6282
'/',

0 commit comments

Comments
 (0)