Mercurial > hg > cmmr2012-drupal-site
comparison vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c75dbcec494b |
---|---|
1 <?php declare(strict_types=1); | |
2 | |
3 namespace PhpParser; | |
4 | |
5 use PhpParser\Node\Arg; | |
6 use PhpParser\Node\Expr; | |
7 use PhpParser\Node\Expr\BinaryOp\Concat; | |
8 use PhpParser\Node\Identifier; | |
9 use PhpParser\Node\Name; | |
10 use PhpParser\Node\Scalar\String_; | |
11 use PhpParser\Node\Stmt; | |
12 use PhpParser\Node\Stmt\Use_; | |
13 | |
14 class BuilderFactory | |
15 { | |
16 /** | |
17 * Creates a namespace builder. | |
18 * | |
19 * @param null|string|Node\Name $name Name of the namespace | |
20 * | |
21 * @return Builder\Namespace_ The created namespace builder | |
22 */ | |
23 public function namespace($name) : Builder\Namespace_ { | |
24 return new Builder\Namespace_($name); | |
25 } | |
26 | |
27 /** | |
28 * Creates a class builder. | |
29 * | |
30 * @param string $name Name of the class | |
31 * | |
32 * @return Builder\Class_ The created class builder | |
33 */ | |
34 public function class(string $name) : Builder\Class_ { | |
35 return new Builder\Class_($name); | |
36 } | |
37 | |
38 /** | |
39 * Creates an interface builder. | |
40 * | |
41 * @param string $name Name of the interface | |
42 * | |
43 * @return Builder\Interface_ The created interface builder | |
44 */ | |
45 public function interface(string $name) : Builder\Interface_ { | |
46 return new Builder\Interface_($name); | |
47 } | |
48 | |
49 /** | |
50 * Creates a trait builder. | |
51 * | |
52 * @param string $name Name of the trait | |
53 * | |
54 * @return Builder\Trait_ The created trait builder | |
55 */ | |
56 public function trait(string $name) : Builder\Trait_ { | |
57 return new Builder\Trait_($name); | |
58 } | |
59 | |
60 /** | |
61 * Creates a method builder. | |
62 * | |
63 * @param string $name Name of the method | |
64 * | |
65 * @return Builder\Method The created method builder | |
66 */ | |
67 public function method(string $name) : Builder\Method { | |
68 return new Builder\Method($name); | |
69 } | |
70 | |
71 /** | |
72 * Creates a parameter builder. | |
73 * | |
74 * @param string $name Name of the parameter | |
75 * | |
76 * @return Builder\Param The created parameter builder | |
77 */ | |
78 public function param(string $name) : Builder\Param { | |
79 return new Builder\Param($name); | |
80 } | |
81 | |
82 /** | |
83 * Creates a property builder. | |
84 * | |
85 * @param string $name Name of the property | |
86 * | |
87 * @return Builder\Property The created property builder | |
88 */ | |
89 public function property(string $name) : Builder\Property { | |
90 return new Builder\Property($name); | |
91 } | |
92 | |
93 /** | |
94 * Creates a function builder. | |
95 * | |
96 * @param string $name Name of the function | |
97 * | |
98 * @return Builder\Function_ The created function builder | |
99 */ | |
100 public function function(string $name) : Builder\Function_ { | |
101 return new Builder\Function_($name); | |
102 } | |
103 | |
104 /** | |
105 * Creates a namespace/class use builder. | |
106 * | |
107 * @param string|Node\Name $name Name to alias | |
108 * | |
109 * @return Builder\Use_ The create use builder | |
110 */ | |
111 public function use($name) : Builder\Use_ { | |
112 return new Builder\Use_($name, Use_::TYPE_NORMAL); | |
113 } | |
114 | |
115 /** | |
116 * Creates node a for a literal value. | |
117 * | |
118 * @param Expr|bool|null|int|float|string|array $value $value | |
119 * | |
120 * @return Expr | |
121 */ | |
122 public function val($value) : Expr { | |
123 return BuilderHelpers::normalizeValue($value); | |
124 } | |
125 | |
126 /** | |
127 * Normalizes an argument list. | |
128 * | |
129 * Creates Arg nodes for all arguments and converts literal values to expressions. | |
130 * | |
131 * @param array $args List of arguments to normalize | |
132 * | |
133 * @return Arg[] | |
134 */ | |
135 public function args(array $args) : array { | |
136 $normalizedArgs = []; | |
137 foreach ($args as $arg) { | |
138 if ($arg instanceof Arg) { | |
139 $normalizedArgs[] = $arg; | |
140 } else { | |
141 $normalizedArgs[] = new Arg(BuilderHelpers::normalizeValue($arg)); | |
142 } | |
143 } | |
144 return $normalizedArgs; | |
145 } | |
146 | |
147 /** | |
148 * Creates a function call node. | |
149 * | |
150 * @param string|Name|Expr $name Function name | |
151 * @param array $args Function arguments | |
152 * | |
153 * @return Expr\FuncCall | |
154 */ | |
155 public function funcCall($name, array $args = []) : Expr\FuncCall { | |
156 return new Expr\FuncCall( | |
157 BuilderHelpers::normalizeNameOrExpr($name), | |
158 $this->args($args) | |
159 ); | |
160 } | |
161 | |
162 /** | |
163 * Creates a method call node. | |
164 * | |
165 * @param Expr $var Variable the method is called on | |
166 * @param string|Identifier|Expr $name Method name | |
167 * @param array $args Method arguments | |
168 * | |
169 * @return Expr\MethodCall | |
170 */ | |
171 public function methodCall(Expr $var, $name, array $args = []) : Expr\MethodCall { | |
172 return new Expr\MethodCall( | |
173 $var, | |
174 BuilderHelpers::normalizeIdentifierOrExpr($name), | |
175 $this->args($args) | |
176 ); | |
177 } | |
178 | |
179 /** | |
180 * Creates a static method call node. | |
181 * | |
182 * @param string|Name|Expr $class Class name | |
183 * @param string|Identifier|Expr $name Method name | |
184 * @param array $args Method arguments | |
185 * | |
186 * @return Expr\StaticCall | |
187 */ | |
188 public function staticCall($class, $name, array $args = []) : Expr\StaticCall { | |
189 return new Expr\StaticCall( | |
190 BuilderHelpers::normalizeNameOrExpr($class), | |
191 BuilderHelpers::normalizeIdentifierOrExpr($name), | |
192 $this->args($args) | |
193 ); | |
194 } | |
195 | |
196 /** | |
197 * Creates an object creation node. | |
198 * | |
199 * @param string|Name|Expr $class Class name | |
200 * @param array $args Constructor arguments | |
201 * | |
202 * @return Expr\New_ | |
203 */ | |
204 public function new($class, array $args = []) : Expr\New_ { | |
205 return new Expr\New_( | |
206 BuilderHelpers::normalizeNameOrExpr($class), | |
207 $this->args($args) | |
208 ); | |
209 } | |
210 | |
211 /** | |
212 * Creates a constant fetch node. | |
213 * | |
214 * @param string|Name $name Constant name | |
215 * | |
216 * @return Expr\ConstFetch | |
217 */ | |
218 public function constFetch($name) : Expr\ConstFetch { | |
219 return new Expr\ConstFetch(BuilderHelpers::normalizeName($name)); | |
220 } | |
221 | |
222 /** | |
223 * Creates a class constant fetch node. | |
224 * | |
225 * @param string|Name|Expr $class Class name | |
226 * @param string|Identifier $name Constant name | |
227 * | |
228 * @return Expr\ClassConstFetch | |
229 */ | |
230 public function classConstFetch($class, $name): Expr\ClassConstFetch { | |
231 return new Expr\ClassConstFetch( | |
232 BuilderHelpers::normalizeNameOrExpr($class), | |
233 BuilderHelpers::normalizeIdentifier($name) | |
234 ); | |
235 } | |
236 | |
237 /** | |
238 * Creates nested Concat nodes from a list of expressions. | |
239 * | |
240 * @param Expr|string ...$exprs Expressions or literal strings | |
241 * | |
242 * @return Concat | |
243 */ | |
244 public function concat(...$exprs) : Concat { | |
245 $numExprs = count($exprs); | |
246 if ($numExprs < 2) { | |
247 throw new \LogicException('Expected at least two expressions'); | |
248 } | |
249 | |
250 $lastConcat = $this->normalizeStringExpr($exprs[0]); | |
251 for ($i = 1; $i < $numExprs; $i++) { | |
252 $lastConcat = new Concat($lastConcat, $this->normalizeStringExpr($exprs[$i])); | |
253 } | |
254 return $lastConcat; | |
255 } | |
256 | |
257 /** | |
258 * @param string|Expr $expr | |
259 * @return Expr | |
260 */ | |
261 private function normalizeStringExpr($expr) : Expr { | |
262 if ($expr instanceof Expr) { | |
263 return $expr; | |
264 } | |
265 | |
266 if (\is_string($expr)) { | |
267 return new String_($expr); | |
268 } | |
269 | |
270 throw new \LogicException('Expected string or Expr'); | |
271 } | |
272 } |