Completed
Push — master ( 724960...4c2cf9 )
by Derek Stephen
01:45
created

AssetManager::camelCaseToDash()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 4

Importance

Changes 0
Metric Value
dl 0
loc 14
ccs 8
cts 8
cp 1
rs 9.7998
c 0
b 0
f 0
cc 4
nc 4
nop 1
crap 4
1
<?php
2
3
namespace Del\Booty;
4
5
class AssetManager
6
{
7
    /** @var string[] $assetFolders */
8
    private $assetFolders = [];
9
10
    /** @var string $destinationFolder */
11
    private $destinationFolder = '';
12
13
    /** @var array $deployInfo */
14
    private $deployInfo = [];
15
16
    /**
17
     * @return string
18
     */
19 1
    public function addAssetsFolder(string $key, string $dir): void
20
    {
21 1
        $dir = realpath($dir);
22
23 1
        if (is_dir($dir)) {
24 1
            $this->assetFolders[$key] = $dir;
25
        }
26 1
    }
27
28
    /**
29
     * @return string
30
     */
31 1
    public function setDestinationFolder(string $dir): void
32
    {
33 1
        $dir = realpath($dir);
34
35 1
        if (is_dir($dir)) {
36 1
            $this->destinationFolder = $dir;
37
        }
38 1
    }
39
40
    /**
41
     * @return bool
42
     */
43 1
    public function deployAssets(): bool
44
    {
45 1
        foreach ($this->assetFolders as $key => $dir) {
46 1
            $key = $this->camelCaseToDash($key);
47 1
            symlink($dir, $this->destinationFolder . '/' . $key);
48
        }
49
50 1
        return true;
51
    }
52
53
    /**
54
     * @param string $key
55
     * @return string
56
     */
57 1
    private function camelCaseToDash(string $key): string
58
    {
59 1
        $newKey = '';
60
61 1
        foreach (str_split($key) as $index => $letter) {
62 1
            if (ctype_upper($letter)) {
63 1
                $letter = strtolower($letter);
64 1
                $letter = $index < 1 ? $letter : '-' . $letter;
65
            }
66 1
            $newKey .= $letter;
67
        }
68
69 1
        return $newKey;
70
    }
71
}