PEEL Shopping
Open source ecommerce : PEEL Shopping
Macro.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of Twig.
5  *
6  * (c) 2009 Fabien Potencier
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11 
18 {
19  public function __construct($name, Twig_NodeInterface $body, Twig_NodeInterface $arguments, $lineno, $tag = null)
20  {
21  parent::__construct(array('body' => $body, 'arguments' => $arguments), array('name' => $name), $lineno, $tag);
22  }
23 
29  public function compile(Twig_Compiler $compiler)
30  {
31  $compiler
32  ->addDebugInfo($this)
33  ->write(sprintf("public function get%s(", $this->getAttribute('name')))
34  ;
35 
36  $count = count($this->getNode('arguments'));
37  $pos = 0;
38  foreach ($this->getNode('arguments') as $name => $default) {
39  $compiler
40  ->raw('$_'.$name.' = ')
41  ->subcompile($default)
42  ;
43 
44  if (++$pos < $count) {
45  $compiler->raw(', ');
46  }
47  }
48 
49  $compiler
50  ->raw(")\n")
51  ->write("{\n")
52  ->indent()
53  ;
54 
55  if (!count($this->getNode('arguments'))) {
56  $compiler->write("\$context = \$this->env->getGlobals();\n\n");
57  } else {
58  $compiler
59  ->write("\$context = \$this->env->mergeGlobals(array(\n")
60  ->indent()
61  ;
62 
63  foreach ($this->getNode('arguments') as $name => $default) {
64  $compiler
65  ->write('')
66  ->string($name)
67  ->raw(' => $_'.$name)
68  ->raw(",\n")
69  ;
70  }
71 
72  $compiler
73  ->outdent()
74  ->write("));\n\n")
75  ;
76  }
77 
78  $compiler
79  ->write("\$blocks = array();\n\n")
80  ->write("ob_start();\n")
81  ->write("try {\n")
82  ->indent()
83  ->subcompile($this->getNode('body'))
84  ->outdent()
85  ->write("} catch (Exception \$e) {\n")
86  ->indent()
87  ->write("ob_end_clean();\n\n")
88  ->write("throw \$e;\n")
89  ->outdent()
90  ->write("}\n\n")
91  ->write("return ('' === \$tmp = ob_get_clean()) ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset());\n")
92  ->outdent()
93  ->write("}\n\n")
94  ;
95  }
96 }
Compiles a node to PHP code.
Definition: Compiler.php:18
outdent($step=1)
Outdents the generated code.
Definition: Compiler.php:256
Represents a node in the AST.
Definition: Node.php:18
compile(Twig_Compiler $compiler)
Compiles the node to PHP.
Definition: Macro.php:29
getAttribute($name)
Gets an attribute.
Definition: Node.php:138
$lineno
Definition: Node.php:22
addDebugInfo(Twig_NodeInterface $node)
Adds debugging information.
Definition: Compiler.php:207
Represents a macro node.
Definition: Macro.php:17
__construct($name, Twig_NodeInterface $body, Twig_NodeInterface $arguments, $lineno, $tag=null)
Definition: Macro.php:19
Represents a node in the AST.
raw($string)
Adds a raw string to the compiled code.
Definition: Compiler.php:109
write()
Writes a string to the compiled code by adding indentation.
Definition: Compiler.php:121
count()
Definition: Node.php:217
getNode($name)
Gets a node by name.
Definition: Node.php:187

This documentation for Open ecommerce PEEL Shopping and PEEL.fr has been generated by Doxygen on Thu Oct 15 2015 14:41:19 - Peel ecommerce is a product of Agence web Advisto SAS. All rights reserved.