summaryrefslogtreecommitdiff
path: root/inc/lib/Twig/Function.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/lib/Twig/Function.php')
-rw-r--r--inc/lib/Twig/Function.php52
1 files changed, 52 insertions, 0 deletions
diff --git a/inc/lib/Twig/Function.php b/inc/lib/Twig/Function.php
new file mode 100644
index 00000000..1197924a
--- /dev/null
+++ b/inc/lib/Twig/Function.php
@@ -0,0 +1,52 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Represents a template function.
+ *
+ * @package twig
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+abstract class Twig_Function implements Twig_FunctionInterface
+{
+ protected $options;
+
+ public function __construct(array $options = array())
+ {
+ $this->options = array_merge(array(
+ 'needs_environment' => false,
+ 'needs_context' => false,
+ ), $options);
+ }
+
+ public function needsEnvironment()
+ {
+ return $this->options['needs_environment'];
+ }
+
+ public function needsContext()
+ {
+ return $this->options['needs_context'];
+ }
+
+ public function getSafe(Twig_Node $functionArgs)
+ {
+ if (isset($this->options['is_safe'])) {
+ return $this->options['is_safe'];
+ }
+
+ if (isset($this->options['is_safe_callback'])) {
+ return call_user_func($this->options['is_safe_callback'], $functionArgs);
+ }
+
+ return array();
+ }
+}