1616use OpenCodeModeling \Filter \Filter \LowerCaseFirst ;
1717use OpenCodeModeling \Filter \Filter \NormalizeLabel ;
1818use OpenCodeModeling \Filter \Filter \UpperCaseFirst ;
19- use OpenCodeModeling \Filter \Filter \UpperToLower ;
2019
2120final class FilterFactory
2221{
2322 /**
2423 * Returns a normalize filter for labels, names ...
2524 *
26- * @param callable ...$callables Attached to the end of the filter chain
25+ * @param callable ...$callables Attached to the end of the filter chain
2726 * @return callable
2827 */
2928 public static function normalizeFilter (callable ...$ callables ): callable
@@ -38,30 +37,45 @@ public static function normalizeFilter(callable ...$callables): callable
3837 return $ filter ;
3938 }
4039
40+ /**
41+ * Returns a filter for snake case values e.g. add_building
42+ *
43+ * @return callable
44+ */
4145 public static function snakeCaseFilter (): callable
4246 {
4347 return self ::normalizeFilter (
4448 new Filter \Word \CamelCaseToUnderscore (),
45- new Filter \StringToLower ()
49+ new Filter \StringToLower (),
50+ new Filter \Word \SeparatorToSeparator (' ' , '_ ' ),
51+ new Filter \Word \SeparatorToSeparator ('- ' , '_ ' ),
4652 );
4753 }
4854
55+ /**
56+ * Returns a filter for camel case values e.g. addBuilding
57+ *
58+ * @return callable
59+ */
4960 public static function camelCaseFilter (): callable
5061 {
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+ );
5771 }
5872
5973 /**
60- * Returns a filter for valid class names e.g. AddBuilding
74+ * Returns a filter for pascal case values e.g. AddBuilding
6175 *
6276 * @return callable
6377 */
64- public static function classNameFilter (): callable
78+ public static function pascalCaseFilter (): callable
6579 {
6680 return new UpperCaseFirst (
6781 self ::normalizeFilter (
@@ -74,6 +88,16 @@ public static function classNameFilter(): callable
7488 );
7589 }
7690
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+
77101 /**
78102 * Returns a filter for valid constant names e.g. ADD_BUILDING
79103 *
@@ -82,9 +106,9 @@ public static function classNameFilter(): callable
82106 public static function constantNameFilter (): callable
83107 {
84108 return self ::normalizeFilter (
85- new Filter \Word \SeparatorToSeparator (' ' , '- ' ),
86- new Filter \Word \DashToCamelCase (),
87109 new Filter \Word \CamelCaseToUnderscore (),
110+ new Filter \Word \SeparatorToSeparator (' ' , '_ ' ),
111+ new Filter \Word \SeparatorToSeparator ('- ' , '_ ' ),
88112 new Filter \StringToUpper ()
89113 );
90114 }
@@ -96,12 +120,7 @@ public static function constantNameFilter(): callable
96120 */
97121 public static function constantValueFilter (): callable
98122 {
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 ();
105124 }
106125
107126 /**
@@ -111,15 +130,7 @@ public static function constantValueFilter(): callable
111130 */
112131 public static function propertyNameFilter (): callable
113132 {
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 ();
123134 }
124135
125136 /**
@@ -129,16 +140,7 @@ public static function propertyNameFilter(): callable
129140 */
130141 public static function methodNameFilter (): callable
131142 {
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 ();
142144 }
143145
144146 /**
0 commit comments