Skip to content

Commit 0ec2421

Browse files
committed
Merge pull request #72 from synchrone/use-directive-support
Supporting use directive
2 parents 7d7c6c8 + 8dd221c commit 0ec2421

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

lib/Boris/ShallowParser.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public function statements($buffer) {
4747
}
4848
}
4949

50-
$rules = array('_scanEscapedChar', '_scanRegion', '_scanStateEntrant', '_scanWsp', '_scanChar');
50+
$rules = array('_scanUse', '_scanEscapedChar', '_scanRegion', '_scanStateEntrant', '_scanWsp', '_scanChar');
5151

5252
foreach ($rules as $method) {
5353
if ($this->$method($result)) {
@@ -200,6 +200,22 @@ private function _scanChar($result) {
200200
return true;
201201
}
202202

203+
private function _scanUse($result) {
204+
if (preg_match("/^use (.+?);/", $result->buffer, $use)) {
205+
$result->buffer = substr($result->buffer, strlen($use[0]));
206+
if(strpos($use[0], ' as ') !== false){
207+
list($class, $alias) = explode(' as ', $use[1]);
208+
}else{
209+
$class = $use[1];
210+
$alias = substr($use[1], strrpos($use[1], '\\') + 1);
211+
}
212+
$result->statements[] = sprintf("class_alias('%s', '%s');", $class, $alias);
213+
return true;
214+
} else {
215+
return false;
216+
}
217+
}
218+
203219
private function _isLambda($input) {
204220
return preg_match(
205221
'/^([^=]*?=\s*)?function\s*\([^\)]*\)\s*(use\s*\([^\)]*\)\s*)?\s*\{.*\}\s*;?$/is',

0 commit comments

Comments
 (0)