コード例 #1
0
ファイル: ConcatTest.php プロジェクト: apishka/templater
 public function getTests()
 {
     $left = Apishka_Templater_Node_Expression_Constant::apishka(1, 1);
     $right = Apishka_Templater_Node_Expression_Constant::apishka(2, 1);
     $node = Apishka_Templater_Node_Expression_Binary_Concat::apishka($left, $right, 1);
     return array(array($node, '(1 . 2)'));
 }
コード例 #2
0
 public function parseStringExpression()
 {
     $stream = $this->parser->getStream();
     $nodes = array();
     // a string cannot be followed by another string in a single expression
     $nextCanBeString = true;
     while (true) {
         if ($nextCanBeString && ($token = $stream->nextIf(Apishka_Templater_Token::STRING_TYPE))) {
             $nodes[] = Apishka_Templater_Node_Expression_Constant::apishka($token->getValue(), $token->getLine());
             $nextCanBeString = false;
         } elseif ($stream->nextIf(Apishka_Templater_Token::INTERPOLATION_START_TYPE)) {
             $nodes[] = $this->parseExpression();
             $stream->expect(Apishka_Templater_Token::INTERPOLATION_END_TYPE);
             $nextCanBeString = true;
         } else {
             break;
         }
     }
     $expr = array_shift($nodes);
     foreach ($nodes as $node) {
         $expr = Apishka_Templater_Node_Expression_Binary_Concat::apishka($expr, $node, $node->getLine());
     }
     return $expr;
 }
コード例 #3
0
 public function getTestsForString()
 {
     return array(array('{{ "foo" }}', Apishka_Templater_Node_Expression_Constant::apishka('foo', 1)), array('{{ "foo #{bar}" }}', Apishka_Templater_Node_Expression_Binary_Concat::apishka(Apishka_Templater_Node_Expression_Constant::apishka('foo ', 1), Apishka_Templater_Node_Expression_Name::apishka('bar', 1), 1)), array('{{ "foo #{bar} baz" }}', Apishka_Templater_Node_Expression_Binary_Concat::apishka(Apishka_Templater_Node_Expression_Binary_Concat::apishka(Apishka_Templater_Node_Expression_Constant::apishka('foo ', 1), Apishka_Templater_Node_Expression_Name::apishka('bar', 1), 1), Apishka_Templater_Node_Expression_Constant::apishka(' baz', 1), 1)), array('{{ "foo #{"foo #{bar} baz"} baz" }}', Apishka_Templater_Node_Expression_Binary_Concat::apishka(Apishka_Templater_Node_Expression_Binary_Concat::apishka(Apishka_Templater_Node_Expression_Constant::apishka('foo ', 1), Apishka_Templater_Node_Expression_Binary_Concat::apishka(Apishka_Templater_Node_Expression_Binary_Concat::apishka(Apishka_Templater_Node_Expression_Constant::apishka('foo ', 1), Apishka_Templater_Node_Expression_Name::apishka('bar', 1), 1), Apishka_Templater_Node_Expression_Constant::apishka(' baz', 1), 1), 1), Apishka_Templater_Node_Expression_Constant::apishka(' baz', 1), 1)));
 }