From 9c48084f3b5064d580a5c88a6fe9170599cf8879 Mon Sep 17 00:00:00 2001 From: Michael Foster Date: Thu, 19 Sep 2013 16:08:25 +1000 Subject: [PATCH] upgrade twig library --- inc/lib/Twig/Autoloader.php | 0 inc/lib/Twig/Compiler.php | 5 +- inc/lib/Twig/CompilerInterface.php | 0 inc/lib/Twig/Environment.php | 14 +++- inc/lib/Twig/Error.php | 6 +- inc/lib/Twig/Error/Loader.php | 0 inc/lib/Twig/Error/Runtime.php | 0 inc/lib/Twig/Error/Syntax.php | 0 inc/lib/Twig/ExistsLoaderInterface.php | 0 inc/lib/Twig/ExpressionParser.php | 81 +++++++++++-------- inc/lib/Twig/Extension.php | 0 inc/lib/Twig/Extension/Core.php | 22 ++--- inc/lib/Twig/Extension/Debug.php | 0 inc/lib/Twig/Extension/Escaper.php | 0 inc/lib/Twig/Extension/Optimizer.php | 0 inc/lib/Twig/Extension/Sandbox.php | 0 inc/lib/Twig/Extension/Staging.php | 0 inc/lib/Twig/Extension/StringLoader.php | 12 +-- inc/lib/Twig/ExtensionInterface.php | 0 inc/lib/Twig/Filter.php | 0 inc/lib/Twig/Filter/Function.php | 0 inc/lib/Twig/Filter/Method.php | 0 inc/lib/Twig/Filter/Node.php | 0 inc/lib/Twig/FilterCallableInterface.php | 0 inc/lib/Twig/FilterInterface.php | 0 inc/lib/Twig/Function.php | 0 inc/lib/Twig/Function/Function.php | 0 inc/lib/Twig/Function/Method.php | 0 inc/lib/Twig/Function/Node.php | 0 inc/lib/Twig/FunctionCallableInterface.php | 0 inc/lib/Twig/FunctionInterface.php | 0 inc/lib/Twig/Lexer.php | 0 inc/lib/Twig/LexerInterface.php | 0 inc/lib/Twig/Loader/Array.php | 7 +- inc/lib/Twig/Loader/Chain.php | 3 +- inc/lib/Twig/Loader/Filesystem.php | 27 ++++--- inc/lib/Twig/Loader/String.php | 0 inc/lib/Twig/LoaderInterface.php | 0 inc/lib/Twig/Markup.php | 0 inc/lib/Twig/Node.php | 0 inc/lib/Twig/Node/AutoEscape.php | 0 inc/lib/Twig/Node/Block.php | 0 inc/lib/Twig/Node/BlockReference.php | 0 inc/lib/Twig/Node/Body.php | 0 inc/lib/Twig/Node/Do.php | 0 inc/lib/Twig/Node/Embed.php | 0 inc/lib/Twig/Node/Expression.php | 0 inc/lib/Twig/Node/Expression/Array.php | 0 inc/lib/Twig/Node/Expression/AssignName.php | 0 inc/lib/Twig/Node/Expression/Binary.php | 0 inc/lib/Twig/Node/Expression/Binary/Add.php | 0 inc/lib/Twig/Node/Expression/Binary/And.php | 0 .../Node/Expression/Binary/BitwiseAnd.php | 0 .../Twig/Node/Expression/Binary/BitwiseOr.php | 0 .../Node/Expression/Binary/BitwiseXor.php | 0 .../Twig/Node/Expression/Binary/Concat.php | 0 inc/lib/Twig/Node/Expression/Binary/Div.php | 0 inc/lib/Twig/Node/Expression/Binary/Equal.php | 0 .../Twig/Node/Expression/Binary/FloorDiv.php | 0 .../Twig/Node/Expression/Binary/Greater.php | 0 .../Node/Expression/Binary/GreaterEqual.php | 0 inc/lib/Twig/Node/Expression/Binary/In.php | 0 inc/lib/Twig/Node/Expression/Binary/Less.php | 0 .../Twig/Node/Expression/Binary/LessEqual.php | 0 inc/lib/Twig/Node/Expression/Binary/Mod.php | 0 inc/lib/Twig/Node/Expression/Binary/Mul.php | 0 .../Twig/Node/Expression/Binary/NotEqual.php | 0 inc/lib/Twig/Node/Expression/Binary/NotIn.php | 0 inc/lib/Twig/Node/Expression/Binary/Or.php | 0 inc/lib/Twig/Node/Expression/Binary/Power.php | 0 inc/lib/Twig/Node/Expression/Binary/Range.php | 0 inc/lib/Twig/Node/Expression/Binary/Sub.php | 0 .../Twig/Node/Expression/BlockReference.php | 0 inc/lib/Twig/Node/Expression/Call.php | 6 +- inc/lib/Twig/Node/Expression/Conditional.php | 0 inc/lib/Twig/Node/Expression/Constant.php | 0 .../Node/Expression/ExtensionReference.php | 0 inc/lib/Twig/Node/Expression/Filter.php | 0 .../Twig/Node/Expression/Filter/Default.php | 0 inc/lib/Twig/Node/Expression/Function.php | 0 inc/lib/Twig/Node/Expression/GetAttr.php | 4 +- inc/lib/Twig/Node/Expression/MacroCall.php | 60 ++++++++++++++ inc/lib/Twig/Node/Expression/MethodCall.php | 0 inc/lib/Twig/Node/Expression/Name.php | 0 inc/lib/Twig/Node/Expression/Parent.php | 0 inc/lib/Twig/Node/Expression/TempName.php | 0 inc/lib/Twig/Node/Expression/Test.php | 0 .../Twig/Node/Expression/Test/Constant.php | 0 inc/lib/Twig/Node/Expression/Test/Defined.php | 0 .../Twig/Node/Expression/Test/Divisibleby.php | 0 inc/lib/Twig/Node/Expression/Test/Even.php | 0 inc/lib/Twig/Node/Expression/Test/Null.php | 0 inc/lib/Twig/Node/Expression/Test/Odd.php | 0 inc/lib/Twig/Node/Expression/Test/Sameas.php | 0 inc/lib/Twig/Node/Expression/Unary.php | 0 inc/lib/Twig/Node/Expression/Unary/Neg.php | 0 inc/lib/Twig/Node/Expression/Unary/Not.php | 0 inc/lib/Twig/Node/Expression/Unary/Pos.php | 0 inc/lib/Twig/Node/Flush.php | 0 inc/lib/Twig/Node/For.php | 0 inc/lib/Twig/Node/ForLoop.php | 0 inc/lib/Twig/Node/If.php | 0 inc/lib/Twig/Node/Import.php | 0 inc/lib/Twig/Node/Include.php | 0 inc/lib/Twig/Node/Macro.php | 4 +- inc/lib/Twig/Node/Module.php | 34 +++++++- inc/lib/Twig/Node/Print.php | 0 inc/lib/Twig/Node/Sandbox.php | 0 inc/lib/Twig/Node/SandboxedModule.php | 0 inc/lib/Twig/Node/SandboxedPrint.php | 0 inc/lib/Twig/Node/Set.php | 0 inc/lib/Twig/Node/SetTemp.php | 0 inc/lib/Twig/Node/Spaceless.php | 0 inc/lib/Twig/Node/Text.php | 0 inc/lib/Twig/NodeInterface.php | 0 inc/lib/Twig/NodeOutputInterface.php | 0 inc/lib/Twig/NodeTraverser.php | 0 inc/lib/Twig/NodeVisitor/Escaper.php | 0 inc/lib/Twig/NodeVisitor/Optimizer.php | 0 inc/lib/Twig/NodeVisitor/SafeAnalysis.php | 2 + inc/lib/Twig/NodeVisitor/Sandbox.php | 0 inc/lib/Twig/NodeVisitorInterface.php | 0 inc/lib/Twig/Parser.php | 2 +- inc/lib/Twig/ParserInterface.php | 0 inc/lib/Twig/Sandbox/SecurityError.php | 0 inc/lib/Twig/Sandbox/SecurityPolicy.php | 0 .../Twig/Sandbox/SecurityPolicyInterface.php | 0 inc/lib/Twig/SimpleFilter.php | 0 inc/lib/Twig/SimpleFunction.php | 0 inc/lib/Twig/SimpleTest.php | 0 inc/lib/Twig/Template.php | 74 +++++++++++++++-- inc/lib/Twig/TemplateInterface.php | 0 inc/lib/Twig/Test.php | 0 inc/lib/Twig/Test/Function.php | 0 inc/lib/Twig/Test/IntegrationTestCase.php | 0 inc/lib/Twig/Test/Method.php | 0 inc/lib/Twig/Test/Node.php | 0 inc/lib/Twig/Test/NodeTestCase.php | 0 inc/lib/Twig/TestCallableInterface.php | 0 inc/lib/Twig/TestInterface.php | 0 inc/lib/Twig/Token.php | 0 inc/lib/Twig/TokenParser.php | 0 inc/lib/Twig/TokenParser/AutoEscape.php | 0 inc/lib/Twig/TokenParser/Block.php | 0 inc/lib/Twig/TokenParser/Do.php | 0 inc/lib/Twig/TokenParser/Embed.php | 0 inc/lib/Twig/TokenParser/Extends.php | 0 inc/lib/Twig/TokenParser/Filter.php | 0 inc/lib/Twig/TokenParser/Flush.php | 0 inc/lib/Twig/TokenParser/For.php | 0 inc/lib/Twig/TokenParser/From.php | 2 +- inc/lib/Twig/TokenParser/If.php | 0 inc/lib/Twig/TokenParser/Import.php | 0 inc/lib/Twig/TokenParser/Include.php | 0 inc/lib/Twig/TokenParser/Macro.php | 0 inc/lib/Twig/TokenParser/Sandbox.php | 0 inc/lib/Twig/TokenParser/Set.php | 0 inc/lib/Twig/TokenParser/Spaceless.php | 0 inc/lib/Twig/TokenParser/Use.php | 0 inc/lib/Twig/TokenParserBroker.php | 0 inc/lib/Twig/TokenParserBrokerInterface.php | 0 inc/lib/Twig/TokenParserInterface.php | 0 inc/lib/Twig/TokenStream.php | 0 163 files changed, 273 insertions(+), 92 deletions(-) mode change 100644 => 100755 inc/lib/Twig/Autoloader.php mode change 100644 => 100755 inc/lib/Twig/Compiler.php mode change 100644 => 100755 inc/lib/Twig/CompilerInterface.php mode change 100644 => 100755 inc/lib/Twig/Environment.php mode change 100644 => 100755 inc/lib/Twig/Error.php mode change 100644 => 100755 inc/lib/Twig/Error/Loader.php mode change 100644 => 100755 inc/lib/Twig/Error/Runtime.php mode change 100644 => 100755 inc/lib/Twig/Error/Syntax.php mode change 100644 => 100755 inc/lib/Twig/ExistsLoaderInterface.php mode change 100644 => 100755 inc/lib/Twig/ExpressionParser.php mode change 100644 => 100755 inc/lib/Twig/Extension.php mode change 100644 => 100755 inc/lib/Twig/Extension/Core.php mode change 100644 => 100755 inc/lib/Twig/Extension/Debug.php mode change 100644 => 100755 inc/lib/Twig/Extension/Escaper.php mode change 100644 => 100755 inc/lib/Twig/Extension/Optimizer.php mode change 100644 => 100755 inc/lib/Twig/Extension/Sandbox.php mode change 100644 => 100755 inc/lib/Twig/Extension/Staging.php mode change 100644 => 100755 inc/lib/Twig/Extension/StringLoader.php mode change 100644 => 100755 inc/lib/Twig/ExtensionInterface.php mode change 100644 => 100755 inc/lib/Twig/Filter.php mode change 100644 => 100755 inc/lib/Twig/Filter/Function.php mode change 100644 => 100755 inc/lib/Twig/Filter/Method.php mode change 100644 => 100755 inc/lib/Twig/Filter/Node.php mode change 100644 => 100755 inc/lib/Twig/FilterCallableInterface.php mode change 100644 => 100755 inc/lib/Twig/FilterInterface.php mode change 100644 => 100755 inc/lib/Twig/Function.php mode change 100644 => 100755 inc/lib/Twig/Function/Function.php mode change 100644 => 100755 inc/lib/Twig/Function/Method.php mode change 100644 => 100755 inc/lib/Twig/Function/Node.php mode change 100644 => 100755 inc/lib/Twig/FunctionCallableInterface.php mode change 100644 => 100755 inc/lib/Twig/FunctionInterface.php mode change 100644 => 100755 inc/lib/Twig/Lexer.php mode change 100644 => 100755 inc/lib/Twig/LexerInterface.php mode change 100644 => 100755 inc/lib/Twig/Loader/Array.php mode change 100644 => 100755 inc/lib/Twig/Loader/Chain.php mode change 100644 => 100755 inc/lib/Twig/Loader/Filesystem.php mode change 100644 => 100755 inc/lib/Twig/Loader/String.php mode change 100644 => 100755 inc/lib/Twig/LoaderInterface.php mode change 100644 => 100755 inc/lib/Twig/Markup.php mode change 100644 => 100755 inc/lib/Twig/Node.php mode change 100644 => 100755 inc/lib/Twig/Node/AutoEscape.php mode change 100644 => 100755 inc/lib/Twig/Node/Block.php mode change 100644 => 100755 inc/lib/Twig/Node/BlockReference.php mode change 100644 => 100755 inc/lib/Twig/Node/Body.php mode change 100644 => 100755 inc/lib/Twig/Node/Do.php mode change 100644 => 100755 inc/lib/Twig/Node/Embed.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Array.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/AssignName.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Add.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/And.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/BitwiseAnd.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/BitwiseOr.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/BitwiseXor.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Concat.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Div.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Equal.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/FloorDiv.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Greater.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/GreaterEqual.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/In.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Less.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/LessEqual.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Mod.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Mul.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/NotEqual.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/NotIn.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Or.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Power.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Range.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Binary/Sub.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/BlockReference.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Call.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Conditional.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Constant.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/ExtensionReference.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Filter.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Filter/Default.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Function.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/GetAttr.php create mode 100755 inc/lib/Twig/Node/Expression/MacroCall.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/MethodCall.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Name.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Parent.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/TempName.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Test.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Test/Constant.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Test/Defined.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Test/Divisibleby.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Test/Even.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Test/Null.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Test/Odd.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Test/Sameas.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Unary.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Unary/Neg.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Unary/Not.php mode change 100644 => 100755 inc/lib/Twig/Node/Expression/Unary/Pos.php mode change 100644 => 100755 inc/lib/Twig/Node/Flush.php mode change 100644 => 100755 inc/lib/Twig/Node/For.php mode change 100644 => 100755 inc/lib/Twig/Node/ForLoop.php mode change 100644 => 100755 inc/lib/Twig/Node/If.php mode change 100644 => 100755 inc/lib/Twig/Node/Import.php mode change 100644 => 100755 inc/lib/Twig/Node/Include.php mode change 100644 => 100755 inc/lib/Twig/Node/Macro.php mode change 100644 => 100755 inc/lib/Twig/Node/Module.php mode change 100644 => 100755 inc/lib/Twig/Node/Print.php mode change 100644 => 100755 inc/lib/Twig/Node/Sandbox.php mode change 100644 => 100755 inc/lib/Twig/Node/SandboxedModule.php mode change 100644 => 100755 inc/lib/Twig/Node/SandboxedPrint.php mode change 100644 => 100755 inc/lib/Twig/Node/Set.php mode change 100644 => 100755 inc/lib/Twig/Node/SetTemp.php mode change 100644 => 100755 inc/lib/Twig/Node/Spaceless.php mode change 100644 => 100755 inc/lib/Twig/Node/Text.php mode change 100644 => 100755 inc/lib/Twig/NodeInterface.php mode change 100644 => 100755 inc/lib/Twig/NodeOutputInterface.php mode change 100644 => 100755 inc/lib/Twig/NodeTraverser.php mode change 100644 => 100755 inc/lib/Twig/NodeVisitor/Escaper.php mode change 100644 => 100755 inc/lib/Twig/NodeVisitor/Optimizer.php mode change 100644 => 100755 inc/lib/Twig/NodeVisitor/SafeAnalysis.php mode change 100644 => 100755 inc/lib/Twig/NodeVisitor/Sandbox.php mode change 100644 => 100755 inc/lib/Twig/NodeVisitorInterface.php mode change 100644 => 100755 inc/lib/Twig/Parser.php mode change 100644 => 100755 inc/lib/Twig/ParserInterface.php mode change 100644 => 100755 inc/lib/Twig/Sandbox/SecurityError.php mode change 100644 => 100755 inc/lib/Twig/Sandbox/SecurityPolicy.php mode change 100644 => 100755 inc/lib/Twig/Sandbox/SecurityPolicyInterface.php mode change 100644 => 100755 inc/lib/Twig/SimpleFilter.php mode change 100644 => 100755 inc/lib/Twig/SimpleFunction.php mode change 100644 => 100755 inc/lib/Twig/SimpleTest.php mode change 100644 => 100755 inc/lib/Twig/Template.php mode change 100644 => 100755 inc/lib/Twig/TemplateInterface.php mode change 100644 => 100755 inc/lib/Twig/Test.php mode change 100644 => 100755 inc/lib/Twig/Test/Function.php mode change 100644 => 100755 inc/lib/Twig/Test/IntegrationTestCase.php mode change 100644 => 100755 inc/lib/Twig/Test/Method.php mode change 100644 => 100755 inc/lib/Twig/Test/Node.php mode change 100644 => 100755 inc/lib/Twig/Test/NodeTestCase.php mode change 100644 => 100755 inc/lib/Twig/TestCallableInterface.php mode change 100644 => 100755 inc/lib/Twig/TestInterface.php mode change 100644 => 100755 inc/lib/Twig/Token.php mode change 100644 => 100755 inc/lib/Twig/TokenParser.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/AutoEscape.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Block.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Do.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Embed.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Extends.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Filter.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Flush.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/For.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/From.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/If.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Import.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Include.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Macro.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Sandbox.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Set.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Spaceless.php mode change 100644 => 100755 inc/lib/Twig/TokenParser/Use.php mode change 100644 => 100755 inc/lib/Twig/TokenParserBroker.php mode change 100644 => 100755 inc/lib/Twig/TokenParserBrokerInterface.php mode change 100644 => 100755 inc/lib/Twig/TokenParserInterface.php mode change 100644 => 100755 inc/lib/Twig/TokenStream.php diff --git a/inc/lib/Twig/Autoloader.php b/inc/lib/Twig/Autoloader.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Compiler.php b/inc/lib/Twig/Compiler.php old mode 100644 new mode 100755 index 99aecbcc..b80210b1 --- a/inc/lib/Twig/Compiler.php +++ b/inc/lib/Twig/Compiler.php @@ -180,11 +180,12 @@ class Twig_Compiler implements Twig_CompilerInterface $this->raw($value ? 'true' : 'false'); } elseif (is_array($value)) { $this->raw('array('); - $i = 0; + $first = true; foreach ($value as $key => $value) { - if ($i++) { + if (!$first) { $this->raw(', '); } + $first = false; $this->repr($key); $this->raw(' => '); $this->repr($value); diff --git a/inc/lib/Twig/CompilerInterface.php b/inc/lib/Twig/CompilerInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Environment.php b/inc/lib/Twig/Environment.php old mode 100644 new mode 100755 index 3afa73d6..09ea4a25 --- a/inc/lib/Twig/Environment.php +++ b/inc/lib/Twig/Environment.php @@ -16,7 +16,7 @@ */ class Twig_Environment { - const VERSION = '1.13.1'; + const VERSION = '1.14.0-DEV'; protected $charset; protected $loader; @@ -44,6 +44,7 @@ class Twig_Environment protected $functionCallbacks; protected $filterCallbacks; protected $staging; + protected $templateClasses; /** * Constructor. @@ -107,6 +108,7 @@ class Twig_Environment $this->setCache($options['cache']); $this->functionCallbacks = array(); $this->filterCallbacks = array(); + $this->templateClasses = array(); $this->addExtension(new Twig_Extension_Core()); $this->addExtension(new Twig_Extension_Escaper($options['autoescape'])); @@ -262,7 +264,13 @@ class Twig_Environment */ public function getTemplateClass($name, $index = null) { - return $this->templateClassPrefix.md5($this->getLoader()->getCacheKey($name)).(null === $index ? '' : '_'.$index); + $suffix = null === $index ? '' : '_'.$index; + $cls = $name.$suffix; + if (isset($this->templateClasses[$cls])) { + return $this->templateClasses[$cls]; + } + + return $this->templateClasses[$cls] = $this->templateClassPrefix.hash('sha256', $this->getLoader()->getCacheKey($name)).$suffix; } /** @@ -728,7 +736,7 @@ class Twig_Environment public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) { if ($this->extensionInitialized) { - throw new LogicException('Unable to add a node visitor as extensions have already been initialized.', $extension->getName()); + throw new LogicException('Unable to add a node visitor as extensions have already been initialized.'); } $this->staging->addNodeVisitor($visitor); diff --git a/inc/lib/Twig/Error.php b/inc/lib/Twig/Error.php old mode 100644 new mode 100755 index 72d91a98..61a4cfa0 --- a/inc/lib/Twig/Error.php +++ b/inc/lib/Twig/Error.php @@ -186,6 +186,7 @@ class Twig_Error extends Exception protected function guessTemplateInfo() { $template = null; + $templateClass = null; if (version_compare(phpversion(), '5.3.6', '>=')) { $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS | DEBUG_BACKTRACE_PROVIDE_OBJECT); @@ -195,8 +196,11 @@ class Twig_Error extends Exception foreach ($backtrace as $trace) { if (isset($trace['object']) && $trace['object'] instanceof Twig_Template && 'Twig_Template' !== get_class($trace['object'])) { - if (null === $this->filename || $this->filename == $trace['object']->getTemplateName()) { + $currentClass = get_class($trace['object']); + $isEmbedContainer = 0 === strpos($templateClass, $currentClass); + if (null === $this->filename || ($this->filename == $trace['object']->getTemplateName() && !$isEmbedContainer)) { $template = $trace['object']; + $templateClass = get_class($trace['object']); } } } diff --git a/inc/lib/Twig/Error/Loader.php b/inc/lib/Twig/Error/Loader.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Error/Runtime.php b/inc/lib/Twig/Error/Runtime.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Error/Syntax.php b/inc/lib/Twig/Error/Syntax.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/ExistsLoaderInterface.php b/inc/lib/Twig/ExistsLoaderInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/ExpressionParser.php b/inc/lib/Twig/ExpressionParser.php old mode 100644 new mode 100755 index 9cf19344..9deab09c --- a/inc/lib/Twig/ExpressionParser.php +++ b/inc/lib/Twig/ExpressionParser.php @@ -316,23 +316,23 @@ class Twig_ExpressionParser throw new Twig_Error_Syntax('The "attribute" function takes at least two arguments (the variable and the attributes)', $line, $this->parser->getFilename()); } - return new Twig_Node_Expression_GetAttr($args->getNode(0), $args->getNode(1), count($args) > 2 ? $args->getNode(2) : new Twig_Node_Expression_Array(array(), $line), Twig_TemplateInterface::ANY_CALL, $line); + return new Twig_Node_Expression_GetAttr($args->getNode(0), $args->getNode(1), count($args) > 2 ? $args->getNode(2) : new Twig_Node_Expression_Array(array(), $line), Twig_Template::ANY_CALL, $line); default: - if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) { - $arguments = new Twig_Node_Expression_Array(array(), $line); - foreach ($this->parseArguments() as $n) { - $arguments->addElement($n); - } + $args = $this->parseArguments(true); + if (null !== $alias = $this->parser->getImportedSymbol('macro', $name)) { + return new Twig_Node_Expression_MacroCall($alias['node'], $alias['name'], $this->createArrayFromArguments($args), $line); + } - $node = new Twig_Node_Expression_MethodCall($alias['node'], $alias['name'], $arguments, $line); - $node->setAttribute('safe', true); + try { + $class = $this->getFunctionNodeClass($name, $line); + } catch (Twig_Error_Syntax $e) { + if (!$this->parser->hasMacro($name)) { + throw $e; + } - return $node; + return new Twig_Node_Expression_MacroCall(new Twig_Node_Expression_Name('_self', $line), $name, $this->createArrayFromArguments($args), $line); } - $args = $this->parseArguments(true); - $class = $this->getFunctionNodeClass($name, $line); - return new $class($name, $args, $line); } } @@ -343,7 +343,7 @@ class Twig_ExpressionParser $token = $stream->next(); $lineno = $token->getLine(); $arguments = new Twig_Node_Expression_Array(array(), $lineno); - $type = Twig_TemplateInterface::ANY_CALL; + $type = Twig_Template::ANY_CALL; if ($token->getValue() == '.') { $token = $stream->next(); if ( @@ -354,13 +354,6 @@ class Twig_ExpressionParser ($token->getType() == Twig_Token::OPERATOR_TYPE && preg_match(Twig_Lexer::REGEX_NAME, $token->getValue())) ) { $arg = new Twig_Node_Expression_Constant($token->getValue(), $lineno); - - if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) { - $type = Twig_TemplateInterface::METHOD_CALL; - foreach ($this->parseArguments() as $n) { - $arguments->addElement($n); - } - } } else { throw new Twig_Error_Syntax('Expected name or number', $lineno, $this->parser->getFilename()); } @@ -370,13 +363,17 @@ class Twig_ExpressionParser throw new Twig_Error_Syntax(sprintf('Dynamic macro names are not supported (called on "%s")', $node->getAttribute('name')), $token->getLine(), $this->parser->getFilename()); } - $node = new Twig_Node_Expression_MethodCall($node, 'get'.$arg->getAttribute('value'), $arguments, $lineno); - $node->setAttribute('safe', true); + $arguments = $this->createArrayFromArguments($this->parseArguments(true)); + + return new Twig_Node_Expression_MacroCall($node, $arg->getAttribute('value'), $arguments, $lineno); + } - return $node; + if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) { + $type = Twig_Template::METHOD_CALL; + $arguments = $this->createArrayFromArguments($this->parseArguments()); } } else { - $type = Twig_TemplateInterface::ARRAY_CALL; + $type = Twig_Template::ARRAY_CALL; // slice? $slice = false; @@ -452,6 +449,8 @@ class Twig_ExpressionParser * * @param Boolean $namedArguments Whether to allow named arguments or not * @param Boolean $definition Whether we are parsing arguments for a function definition + * + * @return Twig_Node */ public function parseArguments($namedArguments = false, $definition = false) { @@ -483,25 +482,26 @@ class Twig_ExpressionParser $value = $this->parsePrimaryExpression(); if (!$this->checkConstantExpression($value)) { - throw new Twig_Error_Syntax(sprintf('A default value for an argument must be a constant (a boolean, a string, a number, or an array).'), $token->getLine(), $this->parser->getFilename()); + throw new Twig_Error_Syntax('A default value for an argument must be a constant (a boolean, a string, a number, or an array).', $token->getLine(), $this->parser->getFilename()); } } else { $value = $this->parseExpression(); } } - if ($definition) { - if (null === $name) { - $name = $value->getAttribute('name'); - $value = new Twig_Node_Expression_Constant(null, $this->parser->getCurrentToken()->getLine()); - } - $args[$name] = $value; + if ($definition && null === $name) { + $name = $value->getAttribute('name'); + $value = new Twig_Node_Expression_Constant(null, $this->parser->getCurrentToken()->getLine()); + } + + if (null === $name) { + $args[] = $value; } else { - if (null === $name) { - $args[] = $value; - } else { - $args[$name] = $value; + if ($definition && isset($args[$name])) { + throw new Twig_Error_Syntax(sprintf('Arguments cannot contain the same argument name more than once ("%s" is defined twice).', $name), $token->getLine(), $this->parser->getFilename()); } + + $args[$name] = $value; } } $stream->expect(Twig_Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); @@ -597,4 +597,15 @@ class Twig_ExpressionParser return true; } + + private function createArrayFromArguments(Twig_Node $arguments, $line = null) + { + $line = null === $line ? $arguments->getLine() : $line; + $array = new Twig_Node_Expression_Array(array(), $line); + foreach ($arguments as $key => $value) { + $array->addElement($value, new Twig_Node_Expression_Constant($key, $value->getLine())); + } + + return $array; + } } diff --git a/inc/lib/Twig/Extension.php b/inc/lib/Twig/Extension.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Extension/Core.php b/inc/lib/Twig/Extension/Core.php old mode 100644 new mode 100755 index e68687b4..60fe1936 --- a/inc/lib/Twig/Extension/Core.php +++ b/inc/lib/Twig/Extension/Core.php @@ -348,7 +348,7 @@ function twig_random(Twig_Environment $env, $values = null) return $values < 0 ? mt_rand($values, 0) : mt_rand(0, $values); } - if ($values instanceof Traversable) { + if (is_object($values) && $values instanceof Traversable) { $values = iterator_to_array($values); } elseif (is_string($values)) { if ('' === $values) { @@ -620,7 +620,7 @@ function twig_array_merge($arr1, $arr2) */ function twig_slice(Twig_Environment $env, $item, $start, $length = null, $preserveKeys = false) { - if ($item instanceof Traversable) { + if (is_object($item) && $item instanceof Traversable) { $item = iterator_to_array($item, false); } @@ -687,7 +687,7 @@ function twig_last(Twig_Environment $env, $item) */ function twig_join_filter($value, $glue = '') { - if ($value instanceof Traversable) { + if (is_object($value) && $value instanceof Traversable) { $value = iterator_to_array($value, false); } @@ -829,7 +829,7 @@ function twig_in_filter($value, $compare) } return false !== strpos($compare, (string) $value); - } elseif ($compare instanceof Traversable) { + } elseif (is_object($compare) && $compare instanceof Traversable) { return in_array($value, iterator_to_array($compare, false), is_object($value)); } @@ -1329,13 +1329,13 @@ function twig_constant($constant, $object = null) * * @param array $items An array of items * @param integer $size The size of the batch - * @param string $fill A string to fill missing items + * @param mixed $fill A value used to fill missing items * * @return array */ function twig_array_batch($items, $size, $fill = null) { - if ($items instanceof Traversable) { + if (is_object($items) && $items instanceof Traversable) { $items = iterator_to_array($items, false); } @@ -1345,10 +1345,12 @@ function twig_array_batch($items, $size, $fill = null) if (null !== $fill) { $last = count($result) - 1; - $result[$last] = array_merge( - $result[$last], - array_fill(0, $size - count($result[$last]), $fill) - ); + if ($fillCount = $size - count($result[$last])) { + $result[$last] = array_merge( + $result[$last], + array_fill(0, $fillCount, $fill) + ); + } } return $result; diff --git a/inc/lib/Twig/Extension/Debug.php b/inc/lib/Twig/Extension/Debug.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Extension/Escaper.php b/inc/lib/Twig/Extension/Escaper.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Extension/Optimizer.php b/inc/lib/Twig/Extension/Optimizer.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Extension/Sandbox.php b/inc/lib/Twig/Extension/Sandbox.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Extension/Staging.php b/inc/lib/Twig/Extension/Staging.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Extension/StringLoader.php b/inc/lib/Twig/Extension/StringLoader.php old mode 100644 new mode 100755 index 20f3f994..5e1a60d0 --- a/inc/lib/Twig/Extension/StringLoader.php +++ b/inc/lib/Twig/Extension/StringLoader.php @@ -43,16 +43,16 @@ class Twig_Extension_StringLoader extends Twig_Extension */ function twig_template_from_string(Twig_Environment $env, $template) { - static $loader; + $name = sprintf('__string_template__%s', hash('sha256', uniqid(mt_rand(), true), false)); - if (null === $loader) { - $loader = new Twig_Loader_String(); - } + $loader = new Twig_Loader_Chain(array( + new Twig_Loader_Array(array($name => $template)), + $current = $env->getLoader(), + )); - $current = $env->getLoader(); $env->setLoader($loader); try { - $template = $env->loadTemplate($template); + $template = $env->loadTemplate($name); } catch (Exception $e) { $env->setLoader($current); diff --git a/inc/lib/Twig/ExtensionInterface.php b/inc/lib/Twig/ExtensionInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Filter.php b/inc/lib/Twig/Filter.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Filter/Function.php b/inc/lib/Twig/Filter/Function.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Filter/Method.php b/inc/lib/Twig/Filter/Method.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Filter/Node.php b/inc/lib/Twig/Filter/Node.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/FilterCallableInterface.php b/inc/lib/Twig/FilterCallableInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/FilterInterface.php b/inc/lib/Twig/FilterInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Function.php b/inc/lib/Twig/Function.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Function/Function.php b/inc/lib/Twig/Function/Function.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Function/Method.php b/inc/lib/Twig/Function/Method.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Function/Node.php b/inc/lib/Twig/Function/Node.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/FunctionCallableInterface.php b/inc/lib/Twig/FunctionCallableInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/FunctionInterface.php b/inc/lib/Twig/FunctionInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Lexer.php b/inc/lib/Twig/Lexer.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/LexerInterface.php b/inc/lib/Twig/LexerInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Loader/Array.php b/inc/lib/Twig/Loader/Array.php old mode 100644 new mode 100755 index 89087aea..ac561048 --- a/inc/lib/Twig/Loader/Array.php +++ b/inc/lib/Twig/Loader/Array.php @@ -21,7 +21,7 @@ */ class Twig_Loader_Array implements Twig_LoaderInterface, Twig_ExistsLoaderInterface { - protected $templates; + protected $templates = array(); /** * Constructor. @@ -32,10 +32,7 @@ class Twig_Loader_Array implements Twig_LoaderInterface, Twig_ExistsLoaderInterf */ public function __construct(array $templates) { - $this->templates = array(); - foreach ($templates as $name => $template) { - $this->templates[$name] = $template; - } + $this->templates = $templates; } /** diff --git a/inc/lib/Twig/Loader/Chain.php b/inc/lib/Twig/Loader/Chain.php old mode 100644 new mode 100755 index 1f1cf065..7919eda6 --- a/inc/lib/Twig/Loader/Chain.php +++ b/inc/lib/Twig/Loader/Chain.php @@ -17,7 +17,7 @@ class Twig_Loader_Chain implements Twig_LoaderInterface, Twig_ExistsLoaderInterface { private $hasSourceCache = array(); - protected $loaders; + protected $loaders = array(); /** * Constructor. @@ -26,7 +26,6 @@ class Twig_Loader_Chain implements Twig_LoaderInterface, Twig_ExistsLoaderInterf */ public function __construct(array $loaders = array()) { - $this->loaders = array(); foreach ($loaders as $loader) { $this->addLoader($loader); } diff --git a/inc/lib/Twig/Loader/Filesystem.php b/inc/lib/Twig/Loader/Filesystem.php old mode 100644 new mode 100755 index f9211cbd..23bac47d --- a/inc/lib/Twig/Loader/Filesystem.php +++ b/inc/lib/Twig/Loader/Filesystem.php @@ -16,8 +16,11 @@ */ class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderInterface { - protected $paths; - protected $cache; + /** Identifier of the main namespace. */ + const MAIN_NAMESPACE = '__main__'; + + protected $paths = array(); + protected $cache = array(); /** * Constructor. @@ -38,7 +41,7 @@ class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderI * * @return array The array of paths where to look for templates */ - public function getPaths($namespace = '__main__') + public function getPaths($namespace = self::MAIN_NAMESPACE) { return isset($this->paths[$namespace]) ? $this->paths[$namespace] : array(); } @@ -46,7 +49,7 @@ class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderI /** * Returns the path namespaces. * - * The "__main__" namespace is always defined. + * The main namespace is always defined. * * @return array The array of defined namespaces */ @@ -61,7 +64,7 @@ class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderI * @param string|array $paths A path or an array of paths where to look for templates * @param string $namespace A path namespace */ - public function setPaths($paths, $namespace = '__main__') + public function setPaths($paths, $namespace = self::MAIN_NAMESPACE) { if (!is_array($paths)) { $paths = array($paths); @@ -81,7 +84,7 @@ class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderI * * @throws Twig_Error_Loader */ - public function addPath($path, $namespace = '__main__') + public function addPath($path, $namespace = self::MAIN_NAMESPACE) { // invalidate the cache $this->cache = array(); @@ -101,7 +104,7 @@ class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderI * * @throws Twig_Error_Loader */ - public function prependPath($path, $namespace = '__main__') + public function prependPath($path, $namespace = self::MAIN_NAMESPACE) { // invalidate the cache $this->cache = array(); @@ -175,15 +178,15 @@ class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderI $this->validateName($name); - $namespace = '__main__'; + $namespace = self::MAIN_NAMESPACE; + $shortname = $name; if (isset($name[0]) && '@' == $name[0]) { if (false === $pos = strpos($name, '/')) { throw new Twig_Error_Loader(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name)); } $namespace = substr($name, 1, $pos - 1); - - $name = substr($name, $pos + 1); + $shortname = substr($name, $pos + 1); } if (!isset($this->paths[$namespace])) { @@ -191,8 +194,8 @@ class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderI } foreach ($this->paths[$namespace] as $path) { - if (is_file($path.'/'.$name)) { - return $this->cache[$name] = $path.'/'.$name; + if (is_file($path.'/'.$shortname)) { + return $this->cache[$name] = $path.'/'.$shortname; } } diff --git a/inc/lib/Twig/Loader/String.php b/inc/lib/Twig/Loader/String.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/LoaderInterface.php b/inc/lib/Twig/LoaderInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Markup.php b/inc/lib/Twig/Markup.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node.php b/inc/lib/Twig/Node.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/AutoEscape.php b/inc/lib/Twig/Node/AutoEscape.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Block.php b/inc/lib/Twig/Node/Block.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/BlockReference.php b/inc/lib/Twig/Node/BlockReference.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Body.php b/inc/lib/Twig/Node/Body.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Do.php b/inc/lib/Twig/Node/Do.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Embed.php b/inc/lib/Twig/Node/Embed.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression.php b/inc/lib/Twig/Node/Expression.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Array.php b/inc/lib/Twig/Node/Expression/Array.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/AssignName.php b/inc/lib/Twig/Node/Expression/AssignName.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary.php b/inc/lib/Twig/Node/Expression/Binary.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Add.php b/inc/lib/Twig/Node/Expression/Binary/Add.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/And.php b/inc/lib/Twig/Node/Expression/Binary/And.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/BitwiseAnd.php b/inc/lib/Twig/Node/Expression/Binary/BitwiseAnd.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/BitwiseOr.php b/inc/lib/Twig/Node/Expression/Binary/BitwiseOr.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/BitwiseXor.php b/inc/lib/Twig/Node/Expression/Binary/BitwiseXor.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Concat.php b/inc/lib/Twig/Node/Expression/Binary/Concat.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Div.php b/inc/lib/Twig/Node/Expression/Binary/Div.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Equal.php b/inc/lib/Twig/Node/Expression/Binary/Equal.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/FloorDiv.php b/inc/lib/Twig/Node/Expression/Binary/FloorDiv.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Greater.php b/inc/lib/Twig/Node/Expression/Binary/Greater.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/GreaterEqual.php b/inc/lib/Twig/Node/Expression/Binary/GreaterEqual.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/In.php b/inc/lib/Twig/Node/Expression/Binary/In.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Less.php b/inc/lib/Twig/Node/Expression/Binary/Less.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/LessEqual.php b/inc/lib/Twig/Node/Expression/Binary/LessEqual.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Mod.php b/inc/lib/Twig/Node/Expression/Binary/Mod.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Mul.php b/inc/lib/Twig/Node/Expression/Binary/Mul.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/NotEqual.php b/inc/lib/Twig/Node/Expression/Binary/NotEqual.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/NotIn.php b/inc/lib/Twig/Node/Expression/Binary/NotIn.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Or.php b/inc/lib/Twig/Node/Expression/Binary/Or.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Power.php b/inc/lib/Twig/Node/Expression/Binary/Power.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Range.php b/inc/lib/Twig/Node/Expression/Binary/Range.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Binary/Sub.php b/inc/lib/Twig/Node/Expression/Binary/Sub.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/BlockReference.php b/inc/lib/Twig/Node/Expression/BlockReference.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Call.php b/inc/lib/Twig/Node/Expression/Call.php old mode 100644 new mode 100755 index 87b62deb..dba9b0e6 --- a/inc/lib/Twig/Node/Expression/Call.php +++ b/inc/lib/Twig/Node/Expression/Call.php @@ -146,7 +146,7 @@ abstract class Twig_Node_Expression_Call extends Twig_Node_Expression if (array_key_exists($name, $parameters)) { if (array_key_exists($pos, $parameters)) { - throw new Twig_Error_Syntax(sprintf('Arguments "%s" is defined twice for %s "%s".', $name, $this->getAttribute('type'), $this->getAttribute('name'))); + throw new Twig_Error_Syntax(sprintf('Argument "%s" is defined twice for %s "%s".', $name, $this->getAttribute('type'), $this->getAttribute('name'))); } $arguments[] = $parameters[$name]; @@ -164,8 +164,8 @@ abstract class Twig_Node_Expression_Call extends Twig_Node_Expression } } - foreach (array_keys($parameters) as $name) { - throw new Twig_Error_Syntax(sprintf('Unknown argument "%s" for %s "%s".', $name, $this->getAttribute('type'), $this->getAttribute('name'))); + if (!empty($parameters)) { + throw new Twig_Error_Syntax(sprintf('Unknown argument%s "%s" for %s "%s".', count($parameters) > 1 ? 's' : '' , implode('", "', array_keys($parameters)), $this->getAttribute('type'), $this->getAttribute('name'))); } return $arguments; diff --git a/inc/lib/Twig/Node/Expression/Conditional.php b/inc/lib/Twig/Node/Expression/Conditional.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Constant.php b/inc/lib/Twig/Node/Expression/Constant.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/ExtensionReference.php b/inc/lib/Twig/Node/Expression/ExtensionReference.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Filter.php b/inc/lib/Twig/Node/Expression/Filter.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Filter/Default.php b/inc/lib/Twig/Node/Expression/Filter/Default.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Function.php b/inc/lib/Twig/Node/Expression/Function.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/GetAttr.php b/inc/lib/Twig/Node/Expression/GetAttr.php old mode 100644 new mode 100755 index 81a9b137..55d9fcc3 --- a/inc/lib/Twig/Node/Expression/GetAttr.php +++ b/inc/lib/Twig/Node/Expression/GetAttr.php @@ -32,10 +32,10 @@ class Twig_Node_Expression_GetAttr extends Twig_Node_Expression $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')) { + if (count($this->getNode('arguments')) || Twig_Template::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')) { + if (Twig_Template::ANY_CALL !== $this->getAttribute('type') || $this->getAttribute('is_defined_test') || $this->getAttribute('ignore_strict_check')) { $compiler->raw(', ')->repr($this->getAttribute('type')); } diff --git a/inc/lib/Twig/Node/Expression/MacroCall.php b/inc/lib/Twig/Node/Expression/MacroCall.php new file mode 100755 index 00000000..3e6b8c12 --- /dev/null +++ b/inc/lib/Twig/Node/Expression/MacroCall.php @@ -0,0 +1,60 @@ + + */ +class Twig_Node_Expression_MacroCall extends Twig_Node_Expression +{ + public function __construct(Twig_Node_Expression $template, $name, Twig_Node_Expression_Array $arguments, $lineno) + { + parent::__construct(array('template' => $template, 'arguments' => $arguments), array('name' => $name), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + $namedNames = array(); + $namedCount = 0; + $positionalCount = 0; + foreach ($this->getNode('arguments')->getKeyValuePairs() as $pair) { + $name = $pair['key']->getAttribute('value'); + if (!is_int($name)) { + $namedCount++; + $namedNames[$name] = 1; + } elseif ($namedCount > 0) { + throw new Twig_Error_Syntax(sprintf('Positional arguments cannot be used after named arguments for macro "%s".', $this->getAttribute('name')), $this->lineno); + } else { + $positionalCount++; + } + } + + $compiler + ->raw('$this->callMacro(') + ->subcompile($this->getNode('template')) + ->raw(', ')->repr($this->getAttribute('name')) + ->raw(', ')->subcompile($this->getNode('arguments')) + ; + + if ($namedCount > 0) { + $compiler + ->raw(', ')->repr($namedNames) + ->raw(', ')->repr($namedCount) + ->raw(', ')->repr($positionalCount) + ; + } + + $compiler + ->raw(')') + ; + } +} diff --git a/inc/lib/Twig/Node/Expression/MethodCall.php b/inc/lib/Twig/Node/Expression/MethodCall.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Name.php b/inc/lib/Twig/Node/Expression/Name.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Parent.php b/inc/lib/Twig/Node/Expression/Parent.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/TempName.php b/inc/lib/Twig/Node/Expression/TempName.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Test.php b/inc/lib/Twig/Node/Expression/Test.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Test/Constant.php b/inc/lib/Twig/Node/Expression/Test/Constant.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Test/Defined.php b/inc/lib/Twig/Node/Expression/Test/Defined.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Test/Divisibleby.php b/inc/lib/Twig/Node/Expression/Test/Divisibleby.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Test/Even.php b/inc/lib/Twig/Node/Expression/Test/Even.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Test/Null.php b/inc/lib/Twig/Node/Expression/Test/Null.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Test/Odd.php b/inc/lib/Twig/Node/Expression/Test/Odd.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Test/Sameas.php b/inc/lib/Twig/Node/Expression/Test/Sameas.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Unary.php b/inc/lib/Twig/Node/Expression/Unary.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Unary/Neg.php b/inc/lib/Twig/Node/Expression/Unary/Neg.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Unary/Not.php b/inc/lib/Twig/Node/Expression/Unary/Not.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Expression/Unary/Pos.php b/inc/lib/Twig/Node/Expression/Unary/Pos.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Flush.php b/inc/lib/Twig/Node/Flush.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/For.php b/inc/lib/Twig/Node/For.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/ForLoop.php b/inc/lib/Twig/Node/ForLoop.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/If.php b/inc/lib/Twig/Node/If.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Import.php b/inc/lib/Twig/Node/Import.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Include.php b/inc/lib/Twig/Node/Include.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Macro.php b/inc/lib/Twig/Node/Macro.php old mode 100644 new mode 100755 index 89910618..43c75e5c --- a/inc/lib/Twig/Node/Macro.php +++ b/inc/lib/Twig/Node/Macro.php @@ -18,7 +18,7 @@ class Twig_Node_Macro extends Twig_Node { public function __construct($name, Twig_NodeInterface $body, Twig_NodeInterface $arguments, $lineno, $tag = null) { - parent::__construct(array('body' => $body, 'arguments' => $arguments), array('name' => $name), $lineno, $tag); + parent::__construct(array('body' => $body, 'arguments' => $arguments), array('name' => $name, 'method' => 'get'.ucfirst($name)), $lineno, $tag); } /** @@ -30,7 +30,7 @@ class Twig_Node_Macro extends Twig_Node { $compiler ->addDebugInfo($this) - ->write(sprintf("public function get%s(", $this->getAttribute('name'))) + ->write(sprintf("public function %s(", $this->getAttribute('method'))) ; $count = count($this->getNode('arguments')); diff --git a/inc/lib/Twig/Node/Module.php b/inc/lib/Twig/Node/Module.php old mode 100644 new mode 100755 index 585048b8..224410a2 --- a/inc/lib/Twig/Node/Module.php +++ b/inc/lib/Twig/Node/Module.php @@ -233,11 +233,43 @@ class Twig_Node_Module extends Twig_Node ; } + $compiler + ->outdent() + ->write(");\n\n") + ; + + // macro information + $compiler + ->write("\$this->macros = array(\n") + ->indent() + ; + + foreach ($this->getNode('macros') as $name => $node) { + $compiler + ->addIndentation()->repr($name)->raw(" => array(\n") + ->indent() + ->write("'method' => ")->repr($node->getAttribute('method'))->raw(",\n") + ->write("'arguments' => array(\n") + ->indent() + ; + foreach ($node->getNode('arguments') as $argument => $value) { + $compiler->addIndentation()->repr($argument)->raw (' => ')->subcompile($value)->raw(",\n"); + } + $compiler + ->outdent() + ->write("),\n") + ->outdent() + ->write("),\n") + ; + } $compiler ->outdent() ->write(");\n") + ; + + $compiler ->outdent() - ->write("}\n\n"); + ->write("}\n\n") ; } diff --git a/inc/lib/Twig/Node/Print.php b/inc/lib/Twig/Node/Print.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Sandbox.php b/inc/lib/Twig/Node/Sandbox.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/SandboxedModule.php b/inc/lib/Twig/Node/SandboxedModule.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/SandboxedPrint.php b/inc/lib/Twig/Node/SandboxedPrint.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Set.php b/inc/lib/Twig/Node/Set.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/SetTemp.php b/inc/lib/Twig/Node/SetTemp.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Spaceless.php b/inc/lib/Twig/Node/Spaceless.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Node/Text.php b/inc/lib/Twig/Node/Text.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/NodeInterface.php b/inc/lib/Twig/NodeInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/NodeOutputInterface.php b/inc/lib/Twig/NodeOutputInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/NodeTraverser.php b/inc/lib/Twig/NodeTraverser.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/NodeVisitor/Escaper.php b/inc/lib/Twig/NodeVisitor/Escaper.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/NodeVisitor/Optimizer.php b/inc/lib/Twig/NodeVisitor/Optimizer.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/NodeVisitor/SafeAnalysis.php b/inc/lib/Twig/NodeVisitor/SafeAnalysis.php old mode 100644 new mode 100755 index c4bbd812..b0c658cd --- a/inc/lib/Twig/NodeVisitor/SafeAnalysis.php +++ b/inc/lib/Twig/NodeVisitor/SafeAnalysis.php @@ -89,6 +89,8 @@ class Twig_NodeVisitor_SafeAnalysis implements Twig_NodeVisitorInterface } else { $this->setSafe($node, array()); } + } elseif ($node instanceof Twig_Node_Expression_MacroCall) { + $this->setSafe($node, array('all')); } elseif ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name) { $name = $node->getNode('node')->getAttribute('name'); // attributes on template instances are safe diff --git a/inc/lib/Twig/NodeVisitor/Sandbox.php b/inc/lib/Twig/NodeVisitor/Sandbox.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/NodeVisitorInterface.php b/inc/lib/Twig/NodeVisitorInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Parser.php b/inc/lib/Twig/Parser.php old mode 100644 new mode 100755 index 958e46b3..bebdd9bb --- a/inc/lib/Twig/Parser.php +++ b/inc/lib/Twig/Parser.php @@ -49,7 +49,7 @@ class Twig_Parser implements Twig_ParserInterface public function getVarName() { - return sprintf('__internal_%s', hash('sha1', uniqid(mt_rand(), true), false)); + return sprintf('__internal_%s', hash('sha256', uniqid(mt_rand(), true), false)); } public function getFilename() diff --git a/inc/lib/Twig/ParserInterface.php b/inc/lib/Twig/ParserInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Sandbox/SecurityError.php b/inc/lib/Twig/Sandbox/SecurityError.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Sandbox/SecurityPolicy.php b/inc/lib/Twig/Sandbox/SecurityPolicy.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Sandbox/SecurityPolicyInterface.php b/inc/lib/Twig/Sandbox/SecurityPolicyInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/SimpleFilter.php b/inc/lib/Twig/SimpleFilter.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/SimpleFunction.php b/inc/lib/Twig/SimpleFunction.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/SimpleTest.php b/inc/lib/Twig/SimpleTest.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Template.php b/inc/lib/Twig/Template.php old mode 100644 new mode 100755 index a001ca03..a42fab28 --- a/inc/lib/Twig/Template.php +++ b/inc/lib/Twig/Template.php @@ -24,6 +24,7 @@ abstract class Twig_Template implements Twig_TemplateInterface protected $env; protected $blocks; protected $traits; + protected $macros; /** * Constructor. @@ -35,6 +36,7 @@ abstract class Twig_Template implements Twig_TemplateInterface $this->env = $env; $this->blocks = array(); $this->traits = array(); + $this->macros = array(); } /** @@ -326,7 +328,7 @@ abstract class Twig_Template implements Twig_TemplateInterface * @param mixed $object The object or array from where to get the item * @param mixed $item The item to get from the array or object * @param array $arguments An array of arguments to pass if the item is an object method - * @param string $type The type of attribute (@see Twig_TemplateInterface) + * @param string $type The type of attribute (@see Twig_Template constants) * @param Boolean $isDefinedTest Whether this is only a defined check * @param Boolean $ignoreStrictCheck Whether to ignore the strict attribute check or not * @@ -334,10 +336,10 @@ abstract class Twig_Template implements Twig_TemplateInterface * * @throws Twig_Error_Runtime if the attribute does not exist and Twig is running in strict mode and $isDefinedTest is false */ - protected function getAttribute($object, $item, array $arguments = array(), $type = Twig_TemplateInterface::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false) + protected function getAttribute($object, $item, array $arguments = array(), $type = Twig_Template::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false) { // array - if (Twig_TemplateInterface::METHOD_CALL !== $type) { + if (Twig_Template::METHOD_CALL !== $type) { $arrayItem = is_bool($item) || is_float($item) ? (int) $item : $item; if ((is_array($object) && array_key_exists($arrayItem, $object)) @@ -350,7 +352,7 @@ abstract class Twig_Template implements Twig_TemplateInterface return $object[$arrayItem]; } - if (Twig_TemplateInterface::ARRAY_CALL === $type || !is_object($object)) { + if (Twig_Template::ARRAY_CALL === $type || !is_object($object)) { if ($isDefinedTest) { return false; } @@ -363,7 +365,7 @@ abstract class Twig_Template implements Twig_TemplateInterface throw new Twig_Error_Runtime(sprintf('Key "%s" in object (with ArrayAccess) of type "%s" does not exist', $arrayItem, get_class($object)), -1, $this->getTemplateName()); } elseif (is_array($object)) { throw new Twig_Error_Runtime(sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object))), -1, $this->getTemplateName()); - } elseif (Twig_TemplateInterface::ARRAY_CALL === $type) { + } elseif (Twig_Template::ARRAY_CALL === $type) { throw new Twig_Error_Runtime(sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object), -1, $this->getTemplateName()); } else { throw new Twig_Error_Runtime(sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object), -1, $this->getTemplateName()); @@ -386,7 +388,7 @@ abstract class Twig_Template implements Twig_TemplateInterface $class = get_class($object); // object property - if (Twig_TemplateInterface::METHOD_CALL !== $type) { + if (Twig_Template::METHOD_CALL !== $type) { if (isset($object->$item) || array_key_exists((string) $item, $object)) { if ($isDefinedTest) { return true; @@ -445,6 +447,66 @@ abstract class Twig_Template implements Twig_TemplateInterface return $ret; } + /** + * Calls macro in a template. + * + * @param Twig_Template $template The template + * @param string $macro The name of macro + * @param array $arguments The arguments of macro + * @param array $namedNames An array of names of arguments as keys + * @param integer $namedCount The count of named arguments + * @param integer $positionalCount The count of positional arguments + * + * @return string The content of a macro + * + * @throws Twig_Error_Runtime if the macro is not defined + * @throws Twig_Error_Runtime if the argument is defined twice + * @throws Twig_Error_Runtime if the argument is unknown + */ + protected function callMacro(Twig_Template $template, $macro, array $arguments, array $namedNames = array(), $namedCount = 0, $positionalCount = -1) + { + if (!isset($template->macros[$macro]['reflection'])) { + if (!isset($template->macros[$macro])) { + throw new Twig_Error_Runtime(sprintf('Macro "%s" is not defined in the template "%s".', $macro, $template->getTemplateName())); + } + + $template->macros[$macro]['reflection'] = new ReflectionMethod($template, $template->macros[$macro]['method']); + } + + if ($namedCount < 1) { + return $template->macros[$macro]['reflection']->invokeArgs($template, $arguments); + } + + $i = 0; + $args = array(); + foreach ($template->macros[$macro]['arguments'] as $name => $value) { + if (isset($namedNames[$name])) { + if ($i < $positionalCount) { + throw new Twig_Error_Runtime(sprintf('Argument "%s" is defined twice for macro "%s" defined in the template "%s".', $name, $macro, $template->getTemplateName())); + } + + $args[] = $arguments[$name]; + if (--$namedCount < 1) { + break; + } + } elseif ($i < $positionalCount) { + $args[] = $arguments[$i]; + } else { + $args[] = $value; + } + + $i++; + } + + if ($namedCount > 0) { + $parameters = array_keys(array_diff_key($namedNames, $template->macros[$macro]['arguments'])); + + throw new Twig_Error_Runtime(sprintf('Unknown argument%s "%s" for macro "%s" defined in the template "%s".', count($parameters) > 1 ? 's' : '' , implode('", "', $parameters), $macro, $template->getTemplateName())); + } + + return $template->macros[$macro]['reflection']->invokeArgs($template, $args); + } + /** * This method is only useful when testing Twig. Do not use it. */ diff --git a/inc/lib/Twig/TemplateInterface.php b/inc/lib/Twig/TemplateInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Test.php b/inc/lib/Twig/Test.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Test/Function.php b/inc/lib/Twig/Test/Function.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Test/IntegrationTestCase.php b/inc/lib/Twig/Test/IntegrationTestCase.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Test/Method.php b/inc/lib/Twig/Test/Method.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Test/Node.php b/inc/lib/Twig/Test/Node.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Test/NodeTestCase.php b/inc/lib/Twig/Test/NodeTestCase.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TestCallableInterface.php b/inc/lib/Twig/TestCallableInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TestInterface.php b/inc/lib/Twig/TestInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/Token.php b/inc/lib/Twig/Token.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser.php b/inc/lib/Twig/TokenParser.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/AutoEscape.php b/inc/lib/Twig/TokenParser/AutoEscape.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Block.php b/inc/lib/Twig/TokenParser/Block.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Do.php b/inc/lib/Twig/TokenParser/Do.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Embed.php b/inc/lib/Twig/TokenParser/Embed.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Extends.php b/inc/lib/Twig/TokenParser/Extends.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Filter.php b/inc/lib/Twig/TokenParser/Filter.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Flush.php b/inc/lib/Twig/TokenParser/Flush.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/For.php b/inc/lib/Twig/TokenParser/For.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/From.php b/inc/lib/Twig/TokenParser/From.php old mode 100644 new mode 100755 index a54054db..ff6e5756 --- a/inc/lib/Twig/TokenParser/From.php +++ b/inc/lib/Twig/TokenParser/From.php @@ -56,7 +56,7 @@ class Twig_TokenParser_From extends Twig_TokenParser $node = new Twig_Node_Import($macro, new Twig_Node_Expression_AssignName($this->parser->getVarName(), $token->getLine()), $token->getLine(), $this->getTag()); foreach ($targets as $name => $alias) { - $this->parser->addImportedSymbol('function', $alias, 'get'.$name, $node->getNode('var')); + $this->parser->addImportedSymbol('macro', $alias, $name, $node->getNode('var')); } return $node; diff --git a/inc/lib/Twig/TokenParser/If.php b/inc/lib/Twig/TokenParser/If.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Import.php b/inc/lib/Twig/TokenParser/Import.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Include.php b/inc/lib/Twig/TokenParser/Include.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Macro.php b/inc/lib/Twig/TokenParser/Macro.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Sandbox.php b/inc/lib/Twig/TokenParser/Sandbox.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Set.php b/inc/lib/Twig/TokenParser/Set.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Spaceless.php b/inc/lib/Twig/TokenParser/Spaceless.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParser/Use.php b/inc/lib/Twig/TokenParser/Use.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParserBroker.php b/inc/lib/Twig/TokenParserBroker.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParserBrokerInterface.php b/inc/lib/Twig/TokenParserBrokerInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenParserInterface.php b/inc/lib/Twig/TokenParserInterface.php old mode 100644 new mode 100755 diff --git a/inc/lib/Twig/TokenStream.php b/inc/lib/Twig/TokenStream.php old mode 100644 new mode 100755