]> BookStack Code Mirror - bookstack/blob - app/Activity/Tools/TagClassGenerator.php
1a1bd16c881060d2615ecc99b10c837392dd292f
[bookstack] / app / Activity / Tools / TagClassGenerator.php
1 <?php
2
3 namespace BookStack\Activity\Tools;
4
5 use BookStack\Activity\Models\Tag;
6
7 class TagClassGenerator
8 {
9     protected array $tags;
10
11     /**
12      * @param Tag[] $tags
13      */
14     public function __construct(array $tags)
15     {
16         $this->tags = $tags;
17     }
18
19     /**
20      * @return string[]
21      */
22     public function generate(): array
23     {
24         $classes = [];
25
26         foreach ($this->tags as $tag) {
27             $name = $this->normalizeTagClassString($tag->name);
28             $value = $this->normalizeTagClassString($tag->value);
29             $classes[] = 'tag-name-' . $name;
30             if ($value) {
31                 $classes[] = 'tag-value-' . $value;
32                 $classes[] = 'tag-pair-' . $name . '-' . $value;
33             }
34         }
35
36         return array_unique($classes);
37     }
38
39     public function generateAsString(): string
40     {
41         return implode(' ', $this->generate());
42     }
43
44     protected function normalizeTagClassString(string $value): string
45     {
46         $value = str_replace(' ', '', strtolower($value));
47         $value = str_replace('-', '', strtolower($value));
48
49         return $value;
50     }
51 }