Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
35 / 35 |
|
100.00% |
7 / 7 |
CRAP | |
100.00% |
1 / 1 |
CaseName | |
100.00% |
35 / 35 |
|
100.00% |
7 / 7 |
10 | |
100.00% |
1 / 1 |
kebab | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
1 | |||
snake | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
1 | |||
pascal | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
1 | |||
camel | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
1 | |||
lower | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
1 | |||
upper | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
1 | |||
routine | |
100.00% |
11 / 11 |
|
100.00% |
1 / 1 |
4 |
1 | <?php |
2 | |
3 | /** |
4 | * @license MIT |
5 | * @author hazuki3417<hazuki3417@gmail.com> |
6 | * @copyright 2023 hazuki3417 all rights reserved. |
7 | */ |
8 | |
9 | namespace Selen\Array\Exchanger\Key; |
10 | |
11 | use Selen\Str\Exchanger\CaseName as ExchangerCaseName; |
12 | |
13 | /** |
14 | * ケースフォールディングを行うクラス(配列要素名) |
15 | */ |
16 | class CaseName |
17 | { |
18 | /** |
19 | * 配列要素文字をケバブケースに変換します |
20 | * |
21 | * @param array<mixed,mixed> $values 変換する配列を渡します |
22 | * |
23 | * @return array<mixed,mixed> 変換後の配列を返します |
24 | */ |
25 | public static function kebab(array $values): array |
26 | { |
27 | $callback = function ($key) { |
28 | return ExchangerCaseName::kebab($key); |
29 | }; |
30 | return self::routine($values, $callback); |
31 | } |
32 | |
33 | /** |
34 | * 配列要素文字をスネークケースに変換します |
35 | * |
36 | * @param array<mixed,mixed> $values 変換する配列を渡します |
37 | * |
38 | * @return array<mixed,mixed> 変換後の配列を返します |
39 | */ |
40 | public static function snake(array $values): array |
41 | { |
42 | $callback = function ($key) { |
43 | return ExchangerCaseName::snake($key); |
44 | }; |
45 | return self::routine($values, $callback); |
46 | } |
47 | |
48 | /** |
49 | * 配列要素文字をパスカルケースに変換します |
50 | * |
51 | * @param array<mixed,mixed> $values 変換する配列を渡します |
52 | * |
53 | * @return array<mixed,mixed> 変換後の配列を返します |
54 | */ |
55 | public static function pascal(array $values): array |
56 | { |
57 | $callback = function ($key) { |
58 | return ExchangerCaseName::pascal($key); |
59 | }; |
60 | return self::routine($values, $callback); |
61 | } |
62 | |
63 | /** |
64 | * 配列要素文字をキャメルケースに変換します |
65 | * |
66 | * @param array<mixed,mixed> $values 変換する配列を渡します |
67 | * |
68 | * @return array<mixed,mixed> 変換後の配列を返します |
69 | */ |
70 | public static function camel(array $values): array |
71 | { |
72 | $callback = function ($key) { |
73 | return ExchangerCaseName::camel($key); |
74 | }; |
75 | return self::routine($values, $callback); |
76 | } |
77 | |
78 | /** |
79 | * 配列要素文字をローワーケースに変換します |
80 | * |
81 | * @param array<mixed,mixed> $values 変換する配列を渡します |
82 | * |
83 | * @return array<mixed,mixed> 変換後の配列を返します |
84 | */ |
85 | public static function lower(array $values): array |
86 | { |
87 | $callback = function ($key) { |
88 | return ExchangerCaseName::lower($key); |
89 | }; |
90 | return self::routine($values, $callback); |
91 | } |
92 | |
93 | /** |
94 | * 配列要素文字をアッパーケースに変換します |
95 | * |
96 | * @param array<mixed,mixed> $values 変換する配列を渡します |
97 | * |
98 | * @return array<mixed,mixed> 変換後の配列を返します |
99 | */ |
100 | public static function upper(array $values): array |
101 | { |
102 | $callback = function ($key) { |
103 | return ExchangerCaseName::upper($key); |
104 | }; |
105 | return self::routine($values, $callback); |
106 | } |
107 | |
108 | /** |
109 | * 配列要素文字をタイトルケースに変換します |
110 | * |
111 | * @param array<mixed,mixed> $values 変換する配列を渡します |
112 | * |
113 | * @return array<mixed,mixed> 変換後の配列を返します |
114 | */ |
115 | private static function routine(array $values, callable $callback): array |
116 | { |
117 | $tmpArr = []; |
118 | |
119 | foreach ($values as $originKey => $originValue) { |
120 | $tmpValue = $originValue; |
121 | |
122 | if (\is_array($originValue)) { |
123 | // 配列型なら再帰処理 |
124 | $tmpValue = self::routine($originValue, $callback); |
125 | } |
126 | |
127 | if (\is_int($originKey)) { |
128 | $tmpArr[$originKey] = $tmpValue; |
129 | continue; |
130 | } |
131 | // keyがstring型のときの処理 |
132 | $renameKey = $callback($originKey); |
133 | $tmpArr[$renameKey] = $tmpValue; |
134 | } |
135 | return $tmpArr; |
136 | } |
137 | } |