public function testLanguageAST() { $dsl = new \Psc\Code\AST\DSL(); extract($dsl->getClosures()); $expectedAST = $var('j', NULL, $construct('Psc.UI.Main', $arguments($argument((object) array('tabs' => $construct('Psc.UI.Tabs', $arguments($argument((object) array('widget' => JooseSnippet::expr("\$('#psc-ui-tabs')")))))))))); $this->assertEquals($expectedAST, $this->jooseSnippet->getAST()); }
public function getAST($nestLevel = NULL) { if ($nestLevel === NULL) { $nestLevel = $this->nestLevel; } // hier closures zu nehmen von help() ist sehr sehr sehr sehr langsam $dsl = new \Psc\Code\AST\DSL(); $cArguments = new stdClass(); foreach ($this->constructParams as $name => $value) { if ($value instanceof JooseSnippet) { $cArguments->{$name} = $value->getAST($nestLevel + 1); $this->addUse($value->getUse()); } else { $cArguments->{$name} = $value; } } $constructAST = $dsl->construct($this->class, $dsl->arguments($dsl->argument($cArguments))); if ($nestLevel == 0) { return $dsl->var_('j', NULL, $constructAST); } else { return $constructAST; } }