diff options
author | Kevin Chabowski <kevin@kch42.de> | 2014-05-24 14:55:11 +0200 |
---|---|---|
committer | Kevin Chabowski <kevin@kch42.de> | 2014-05-24 14:55:11 +0200 |
commit | d48be01fff31a7a9d611802721aa70532d251c3a (patch) | |
tree | 53ac39214a27855a6521f91ea448e39ffcd7866b /src/ste/VariableNode.php | |
parent | 3c51baa4167d5a68ff010dc81525b9340c5f1329 (diff) | |
download | ste-d48be01fff31a7a9d611802721aa70532d251c3a.tar.gz ste-d48be01fff31a7a9d611802721aa70532d251c3a.tar.bz2 ste-d48be01fff31a7a9d611802721aa70532d251c3a.zip |
Moved to src/ste for psr-4 compliance1.0.0
Diffstat (limited to 'src/ste/VariableNode.php')
-rw-r--r-- | src/ste/VariableNode.php | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/ste/VariableNode.php b/src/ste/VariableNode.php new file mode 100644 index 0000000..b312e81 --- /dev/null +++ b/src/ste/VariableNode.php @@ -0,0 +1,25 @@ +<?php + +namespace kch42\ste; + +class VariableNode extends ASTNode { + public $name; + public $arrayfields = array(); + public function transcompile() { + $varaccess = '@$ste->vars[' . (is_numeric($this->name) ? $this->name : '"' . Misc::escape_text($this->name) . '"'). ']'; + foreach($this->arrayfields as $af) { + if((count($af) == 1) and ($af[0] instanceof TextNode) and is_numeric($af[0]->text)) { + $varaccess .= '[' . $af->text . ']'; + } else { + $varaccess .= '[' . implode(".", array_map(function($node) { + if($node instanceof TextNode) { + return "\"" . Misc::escape_text($node->text) . "\""; + } else if($node instanceof VariableNode) { + return $node->transcompile(); + } + }, $af)). ']'; + } + } + return $varaccess; + } +} |