11<?php
22
3- macro {
4- class ·ns()·class {
5- ···body
6- }
7- } >> {
8- class ·class {
9- use \Pre\ClassAccessors\ClassAccessorsTrait;
10-
11- ···body
12- }
13- }
14-
153macro ·unsafe {
16- private ·optional(·either(·ns(), T_ARRAY·a))·type T_VARIABLE·name {
4+ ·chain (
5+ ·either(
6+ private,
7+ protected
8+ )·visibility,
9+ ·optional(
10+ ·either(
11+ ·ns(),
12+ ·token(T_ARRAY)
13+ )
14+ )·type,
15+ ·token(T_VARIABLE)·name,
16+ ·token("{"),
1717 ·repeat(
1818 ·either(
1919 ·chain(
2020 get,
21- ·between(
22- ·token("{"), ·layer(), ·token("}")
23- )·getter_body
21+ ·token(";")
22+ )·simpleGetter,
23+ ·chain(
24+ get,
25+ ·token("{"),
26+ ·layer()·getterBody,
27+ ·token("}"),
28+ ·optional(·token(";"))
2429 )·getter,
2530 ·chain(
2631 set,
27- ·between(
28- ·token("{"), ·layer(), ·token("}")
29- )·setter_body
32+ ·token(";")
33+ )·simpleSetter,
34+ ·chain(
35+ set,
36+ ·token("{"),
37+ ·layer()·setterBody,
38+ ·token("}"),
39+ ·optional(·token(";"))
3040 )·setter,
3141 ·chain(
42+ immutable,
43+ set,
44+ ·token(";")
45+ )·immutableSimpleSetter,
46+ ·chain(
47+ immutable,
48+ set,
49+ ·token("{"),
50+ ·layer()·immutableSetterBody,
51+ ·token("}"),
52+ ·optional(·token(";"))
53+ )·immutableSetter,
54+ ·chain(
55+ unset,
56+ ·token(";")
57+ )·simpleUnsetter,
58+ ·chain(
59+ unset,
60+ ·token("{"),
61+ ·layer()·unsetterBody,
62+ ·token("}"),
63+ ·optional(·token(";"))
64+ )·unsetter,
65+ ·chain(
66+ immutable,
3267 unset,
33- ·between(
34- ·token("{"), ·layer(), ·token("}")
35- )·unsetter_body
36- )·unsetter
68+ ·token(";")
69+ )·immutableSimpleUnsetter,
70+ ·chain(
71+ immutable,
72+ unset,
73+ ·token("{"),
74+ ·layer()·immutableUnsetterBody,
75+ ·token("}"),
76+ ·optional(·token(";"))
77+ )·immutableUnsetter
3778 )
38- )·accessors
39- }
40- ·optional(·token(";"))
79+ )·accessors,
80+ ·token("}"),
81+ ·optional(·token(";"))
82+ )
4183} >> {
42- private T_VARIABLE ·name;
84+ ·visibility ·name;
4385
4486 ·accessors ··· {
45- ·getter ?··· {
46- public function ··concat(get ··studly(··unvar(T_VARIABLE·name)))()··class_accessors_return(·type) {
47- ·getter_body
48- }
49- }
50- ·setter ?··· {
51- public function ··concat(set ··studly(··unvar(T_VARIABLE·name)))(·type $value) {
52- ·setter_body
53- }
54- }
55- ·unsetter ?··· {
56- public function ··concat(unset ··studly(··unvar(T_VARIABLE·name)))() {
57- ·unsetter_body
58- }
59- }
87+ ·simpleGetter ?· {··trim(
88+ public function ··concat(get ··studly(··unvar(·name)))()··class_accessors_return(·type) {··trim(
89+ return $this->··unvar(·name);
90+ )}
91+ )}
92+
93+ ·getter ?· {··trim(
94+ public function ··concat(get ··studly(··unvar(·name)))()··class_accessors_return(·type) {··trim(
95+ ·getterBody
96+ )}
97+ )}
98+
99+ ·simpleSetter ?· {··trim(
100+ public function ··concat(set ··studly(··unvar(·name)))(··trim(·type $value)) {··trim(
101+ $this->··unvar(·name) = $value;
102+ return $this;
103+ )}
104+ )}
105+
106+ ·setter ?· {··trim(
107+ public function ··concat(set ··studly(··unvar(·name)))(··trim(·type $value)) {··trim(
108+ ·setterBody
109+ )}
110+ )}
111+
112+ ·immutableSimpleSetter ?· {··trim(
113+ public function ··concat(with ··studly(··unvar(·name)))(··trim(·type $value)) {··trim(
114+ $clone = clone($this);
115+ $clone->··unvar(·name) = $value;
116+ return $clone;
117+ )}
118+ )}
119+
120+ ·immutableSetter ?· {··trim(
121+ public function ··concat(with ··studly(··unvar(·name)))(··trim(·type $value)) {··trim(
122+ $clone = clone $this;
123+
124+ $bound = \Closure::bind(function() use ($value) {
125+ ·immutableSetterBody
126+ }, $clone);
127+
128+ $bound();
129+
130+ return $clone;
131+ )}
132+ )}
133+
134+ ·simpleUnsetter ?· {··trim(
135+ public function ··concat(unset ··studly(··unvar(·name)))() {··trim(
136+ unset($this->··unvar(·name));
137+ return $this;
138+ )}
139+ )}
140+
141+ ·unsetter ?· {··trim(
142+ public function ··concat(unset ··studly(··unvar(·name)))() {··trim(
143+ ·unsetterBody
144+ )}
145+ )}
146+
147+ ·immutableSimpleUnsetter ?· {··trim(
148+ public function ··concat(without ··studly(··unvar(·name)))(··trim(·type $value)) {··trim(
149+ $clone = clone($this);
150+ unset($clone->··unvar(·name));
151+ return $clone;
152+ )}
153+ )}
154+
155+ ·immutableUnsetter ?· {··trim(
156+ public function ··concat(without ··studly(··unvar(·name)))(··trim(·type $value)) {··trim(
157+ $clone = clone $this;
158+
159+ $bound = \Closure::bind(function() use ($value) {
160+ ·immutableUnsetterBody
161+ }, $clone);
162+
163+ $bound();
164+
165+ return $clone;
166+ )}
167+ )}
60168 }
61169}
62170
@@ -71,7 +179,7 @@ macro {
71179 return $result;
72180 }
73181
74- ··· body
182+ ··trim(··· body)
75183 }
76184}
77185
@@ -86,7 +194,7 @@ macro {
86194 return $result;
87195 }
88196
89- ··· body
197+ ··trim(··· body)
90198 }
91199}
92200
@@ -101,6 +209,22 @@ macro {
101209 return $result;
102210 }
103211
104- ···body
212+ ··trim(···body)
213+ }
214+ }
215+
216+ macro {
217+ ·chain(
218+ class,
219+ ·ns()·name,
220+ ·token("{"),
221+ ·layer()·body,
222+ ·token("}")
223+ )
224+ } >> {
225+ class ·name {
226+ use \Pre\ClassAccessors\ClassAccessorsTrait;
227+
228+ ·body
105229 }
106230}
0 commit comments