Example #1
0
 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());
 }
Example #2
0
 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;
     }
 }