16
16
use OpenCodeModeling \Filter \Filter \LowerCaseFirst ;
17
17
use OpenCodeModeling \Filter \Filter \NormalizeLabel ;
18
18
use OpenCodeModeling \Filter \Filter \UpperCaseFirst ;
19
- use OpenCodeModeling \Filter \Filter \UpperToLower ;
20
19
21
20
final class FilterFactory
22
21
{
23
22
/**
24
23
* Returns a normalize filter for labels, names ...
25
24
*
26
- * @param callable ...$callables Attached to the end of the filter chain
25
+ * @param callable ...$callables Attached to the end of the filter chain
27
26
* @return callable
28
27
*/
29
28
public static function normalizeFilter (callable ...$ callables ): callable
@@ -38,30 +37,45 @@ public static function normalizeFilter(callable ...$callables): callable
38
37
return $ filter ;
39
38
}
40
39
40
+ /**
41
+ * Returns a filter for snake case values e.g. add_building
42
+ *
43
+ * @return callable
44
+ */
41
45
public static function snakeCaseFilter (): callable
42
46
{
43
47
return self ::normalizeFilter (
44
48
new Filter \Word \CamelCaseToUnderscore (),
45
- new Filter \StringToLower ()
49
+ new Filter \StringToLower (),
50
+ new Filter \Word \SeparatorToSeparator (' ' , '_ ' ),
51
+ new Filter \Word \SeparatorToSeparator ('- ' , '_ ' ),
46
52
);
47
53
}
48
54
55
+ /**
56
+ * Returns a filter for camel case values e.g. addBuilding
57
+ *
58
+ * @return callable
59
+ */
49
60
public static function camelCaseFilter (): callable
50
61
{
51
- return new LowerCaseFirst (self ::normalizeFilter ());
52
- }
53
-
54
- public static function pascalCaseFilter (): callable
55
- {
56
- return new UpperCaseFirst (self ::normalizeFilter ());
62
+ return new LowerCaseFirst (
63
+ self ::normalizeFilter (
64
+ new Filter \Word \CamelCaseToUnderscore (),
65
+ new Filter \StringToLower (),
66
+ new Filter \Word \UnderscoreToCamelCase (),
67
+ new Filter \Word \SeparatorToSeparator (' ' , '- ' ),
68
+ new Filter \Word \DashToCamelCase ()
69
+ )
70
+ );
57
71
}
58
72
59
73
/**
60
- * Returns a filter for valid class names e.g. AddBuilding
74
+ * Returns a filter for pascal case values e.g. AddBuilding
61
75
*
62
76
* @return callable
63
77
*/
64
- public static function classNameFilter (): callable
78
+ public static function pascalCaseFilter (): callable
65
79
{
66
80
return new UpperCaseFirst (
67
81
self ::normalizeFilter (
@@ -74,6 +88,16 @@ public static function classNameFilter(): callable
74
88
);
75
89
}
76
90
91
+ /**
92
+ * Returns a filter for valid class names e.g. AddBuilding
93
+ *
94
+ * @return callable
95
+ */
96
+ public static function classNameFilter (): callable
97
+ {
98
+ return self ::pascalCaseFilter ();
99
+ }
100
+
77
101
/**
78
102
* Returns a filter for valid constant names e.g. ADD_BUILDING
79
103
*
@@ -82,9 +106,9 @@ public static function classNameFilter(): callable
82
106
public static function constantNameFilter (): callable
83
107
{
84
108
return self ::normalizeFilter (
85
- new Filter \Word \SeparatorToSeparator (' ' , '- ' ),
86
- new Filter \Word \DashToCamelCase (),
87
109
new Filter \Word \CamelCaseToUnderscore (),
110
+ new Filter \Word \SeparatorToSeparator (' ' , '_ ' ),
111
+ new Filter \Word \SeparatorToSeparator ('- ' , '_ ' ),
88
112
new Filter \StringToUpper ()
89
113
);
90
114
}
@@ -96,12 +120,7 @@ public static function constantNameFilter(): callable
96
120
*/
97
121
public static function constantValueFilter (): callable
98
122
{
99
- return self ::normalizeFilter (
100
- new Filter \Word \SeparatorToSeparator (' ' , '- ' ),
101
- new Filter \Word \DashToCamelCase (),
102
- new Filter \Word \CamelCaseToUnderscore (),
103
- new Filter \StringToLower ()
104
- );
123
+ return self ::snakeCaseFilter ();
105
124
}
106
125
107
126
/**
@@ -111,15 +130,7 @@ public static function constantValueFilter(): callable
111
130
*/
112
131
public static function propertyNameFilter (): callable
113
132
{
114
- return new LowerCaseFirst (
115
- self ::normalizeFilter (
116
- new Filter \Word \CamelCaseToUnderscore (),
117
- new Filter \StringToLower (),
118
- new Filter \Word \UnderscoreToCamelCase (),
119
- new Filter \Word \SeparatorToSeparator (' ' , '- ' ),
120
- new Filter \Word \DashToCamelCase ()
121
- )
122
- );
133
+ return self ::camelCaseFilter ();
123
134
}
124
135
125
136
/**
@@ -129,16 +140,7 @@ public static function propertyNameFilter(): callable
129
140
*/
130
141
public static function methodNameFilter (): callable
131
142
{
132
- return new LowerCaseFirst (
133
- self ::normalizeFilter (
134
- new Filter \Word \CamelCaseToUnderscore (),
135
- new Filter \StringToLower (),
136
- new Filter \Word \UnderscoreToCamelCase (),
137
- new Filter \Word \SeparatorToSeparator (' ' , '- ' ),
138
- new Filter \Word \DashToCamelCase (),
139
- new UpperToLower ()
140
- )
141
- );
143
+ return self ::camelCaseFilter ();
142
144
}
143
145
144
146
/**
0 commit comments