summaryrefslogtreecommitdiff
path: root/inc/lib/Twig/Node/Expression/GetAttr.php
diff options
context:
space:
mode:
authorMichael Foster <savetheinternet@tinyboard.org>2013-08-01 15:20:12 -0400
committerMichael Foster <savetheinternet@tinyboard.org>2013-08-01 15:20:12 -0400
commit0fe552857468aa12097a74e08f51f5aaa983be07 (patch)
tree22dbca1be90d7086b20a077752552296abf23325 /inc/lib/Twig/Node/Expression/GetAttr.php
parent22f3a95e0e421de05a11633eac846df96a2a4768 (diff)
Upgrade Twig library
Diffstat (limited to 'inc/lib/Twig/Node/Expression/GetAttr.php')
-rw-r--r--inc/lib/Twig/Node/Expression/GetAttr.php54
1 files changed, 27 insertions, 27 deletions
diff --git a/inc/lib/Twig/Node/Expression/GetAttr.php b/inc/lib/Twig/Node/Expression/GetAttr.php
index eb9e6050..81a9b137 100644
--- a/inc/lib/Twig/Node/Expression/GetAttr.php
+++ b/inc/lib/Twig/Node/Expression/GetAttr.php
@@ -11,43 +11,43 @@
*/
class Twig_Node_Expression_GetAttr extends Twig_Node_Expression
{
- public function __construct(Twig_Node_Expression $node, Twig_Node_Expression $attribute, Twig_NodeInterface $arguments, $type, $lineno)
+ public function __construct(Twig_Node_Expression $node, Twig_Node_Expression $attribute, Twig_Node_Expression_Array $arguments, $type, $lineno)
{
- parent::__construct(array('node' => $node, 'attribute' => $attribute, 'arguments' => $arguments), array('type' => $type), $lineno);
+ parent::__construct(array('node' => $node, 'attribute' => $attribute, 'arguments' => $arguments), array('type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'disable_c_ext' => false), $lineno);
}
public function compile(Twig_Compiler $compiler)
{
- $compiler->raw('$this->getAttribute(');
-
- if ($this->hasAttribute('is_defined_test') && $compiler->getEnvironment()->isStrictVariables()) {
- $compiler->subcompile(new Twig_Node_Expression_Filter(
- $this->getNode('node'),
- new Twig_Node_Expression_Constant('default', $this->getLine()),
- new Twig_Node(),
- $this->getLine()
- ));
+ if (function_exists('twig_template_get_attributes') && !$this->getAttribute('disable_c_ext')) {
+ $compiler->raw('twig_template_get_attributes($this, ');
} else {
- $compiler->subcompile($this->getNode('node'));
+ $compiler->raw('$this->getAttribute(');
+ }
+
+ if ($this->getAttribute('ignore_strict_check')) {
+ $this->getNode('node')->setAttribute('ignore_strict_check', true);
}
- $compiler
- ->raw(', ')
- ->subcompile($this->getNode('attribute'))
- ->raw(', array(')
- ;
+ $compiler->subcompile($this->getNode('node'));
+
+ $compiler->raw(', ')->subcompile($this->getNode('attribute'));
+
+ if (count($this->getNode('arguments')) || Twig_TemplateInterface::ANY_CALL !== $this->getAttribute('type') || $this->getAttribute('is_defined_test') || $this->getAttribute('ignore_strict_check')) {
+ $compiler->raw(', ')->subcompile($this->getNode('arguments'));
+
+ if (Twig_TemplateInterface::ANY_CALL !== $this->getAttribute('type') || $this->getAttribute('is_defined_test') || $this->getAttribute('ignore_strict_check')) {
+ $compiler->raw(', ')->repr($this->getAttribute('type'));
+ }
+
+ if ($this->getAttribute('is_defined_test') || $this->getAttribute('ignore_strict_check')) {
+ $compiler->raw(', '.($this->getAttribute('is_defined_test') ? 'true' : 'false'));
+ }
- foreach ($this->getNode('arguments') as $node) {
- $compiler
- ->subcompile($node)
- ->raw(', ')
- ;
+ if ($this->getAttribute('ignore_strict_check')) {
+ $compiler->raw(', '.($this->getAttribute('ignore_strict_check') ? 'true' : 'false'));
+ }
}
- $compiler
- ->raw('), ')
- ->repr($this->getAttribute('type'))
- ->raw($this->hasAttribute('is_defined_test') ? ', true' : ', false')
- ->raw(')');
+ $compiler->raw(')');
}
}