Skip to content

Commit aa791f2

Browse files
authored
De-duplicate repeating sections in generated class names
1 parent 20d565b commit aa791f2

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/Frame.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,24 @@ public function getClassName(): ?string
6060
if (!$name) {
6161
return null;
6262
}
63-
63+
64+
$segments = array_filter(explode('.', str_replace('_', '.', $prefix . '.' . $name)));
65+
66+
$deduped = [];
67+
foreach ($segments as $segment) {
68+
foreach ($deduped as $existing) {
69+
if (str_starts_with($segment, $existing)) {
70+
$segment = substr($segment, strlen($existing));
71+
$segment = ltrim($segment, '._');
72+
}
73+
}
74+
$deduped[] = $segment;
75+
}
76+
6477
return str_replace(
6578
['$', ' ', '-', '.'],
6679
['', '_', '_', '_'],
67-
$prefix === '' ? $name : $prefix . '_' . $name,
80+
implode('.', array_filter($deduped))
6881
);
6982
}
7083

0 commit comments

Comments
 (0)