@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at upstream/main 57 lines 1.4 kB view raw
1<?php 2 3final class PhutilPHPCodeSnippetContextFreeGrammar 4 extends PhutilCLikeCodeSnippetContextFreeGrammar { 5 6 protected function buildRuleSet() { 7 return array_merge(parent::buildRuleSet(), $this->getClassRuleSets()); 8 } 9 10 protected function getStartGrammarSet() { 11 $start_grammar = parent::getStartGrammarSet(); 12 13 $start_grammar['start'][] = '[classdecl]'; 14 $start_grammar['start'][] = '[classdecl]'; 15 16 return $start_grammar; 17 } 18 19 protected function getExprGrammarSet() { 20 $expr = parent::getExprGrammarSet(); 21 22 $expr['expr'][] = 'new [classname]([funccallparam])'; 23 24 $expr['expr'][] = '[classname]::[funccall]'; 25 26 return $expr; 27 } 28 29 protected function getVarNameGrammarSet() { 30 $varnames = parent::getVarNameGrammarSet(); 31 32 foreach ($varnames as $vn_key => $vn_val) { 33 foreach ($vn_val as $vv_key => $vv_value) { 34 $varnames[$vn_key][$vv_key] = '$'.$vv_value; 35 } 36 } 37 38 return $varnames; 39 } 40 41 protected function getFuncNameGrammarSet() { 42 return $this->buildGrammarSet('funcname', 43 array_mergev(get_defined_functions())); 44 } 45 46 protected function getMethodCallGrammarSet() { 47 return $this->buildGrammarSet('methodcall', 48 array( 49 '$this->[funccall]', 50 'self::[funccall]', 51 'static::[funccall]', 52 '[varname]->[funccall]', 53 '[classname]::[funccall]', 54 )); 55 } 56 57}