Added min and max function
authorGrégoire Pineau <lyrixx@lyrixx.info>
Sat, 23 Nov 2013 04:00:49 +0000 (01:00 -0300)
committerGrégoire Pineau <lyrixx@lyrixx.info>
Tue, 3 Dec 2013 12:46:57 +0000 (13:46 +0100)
CHANGELOG
doc/functions/index.rst
doc/functions/max.rst [new file with mode: 0644]
doc/functions/min.rst [new file with mode: 0644]
lib/Twig/Extension/Core.php
test/Twig/Tests/Fixtures/functions/max.test [new file with mode: 0644]
test/Twig/Tests/Fixtures/functions/min.test [new file with mode: 0644]

index 5fd88cd..1d80b36 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
 * 1.15.0 (2013-XX-XX)
 
+ * added min and max functions
  * added the round filter
  * fixed a bug that prevented the optimizers to be enabled/disabled selectively
  * fixed first and last filters for UTF-8 strings
index 5955e1f..07214a7 100644 (file)
@@ -11,6 +11,8 @@ Functions
     date
     dump
     include
+    max
+    min
     parent
     random
     range
diff --git a/doc/functions/max.rst b/doc/functions/max.rst
new file mode 100644 (file)
index 0000000..8232b82
--- /dev/null
@@ -0,0 +1,15 @@
+``max``
+=======
+
+.. versionadded:: 1.15
+    The ``max`` function was added in Twig 1.15.
+
+``max`` returns the biggest value of a sequence or a set of values:
+
+.. code-block:: jinja
+
+    {{ max(1, 3, 2) }}
+    {{ max([1, 3, 2]) }}
+
+    # When called with a mapping, max ignores keys and only compares values.
+    {{ max({2:"two", 1:"one", 3:"three", 5:"five", 4:"for"}) }} {# return "two" #}
diff --git a/doc/functions/min.rst b/doc/functions/min.rst
new file mode 100644 (file)
index 0000000..c87cab0
--- /dev/null
@@ -0,0 +1,15 @@
+``min``
+=======
+
+.. versionadded:: 1.15
+    The ``min`` function was added in Twig 1.15.
+
+``min`` returns the lowest value of a sequence or a set of values:
+
+.. code-block:: jinja
+
+    {{ min(1, 3, 2) }}
+    {{ min([1, 3, 2]) }}
+
+    # When called with a mapping, min ignores keys and only compares values.
+    {{ min({2:"two", 1:"one", 3:"three", 5:"five", 4:"for"}) }} {# return "five" #}
index 6e8617c..4e80c67 100644 (file)
@@ -210,6 +210,8 @@ class Twig_Extension_Core extends Twig_Extension
     public function getFunctions()
     {
         return array(
+            new Twig_SimpleFunction('max', 'max'),
+            new Twig_SimpleFunction('min', 'min'),
             new Twig_SimpleFunction('range', 'range'),
             new Twig_SimpleFunction('constant', 'twig_constant'),
             new Twig_SimpleFunction('cycle', 'twig_cycle'),
diff --git a/test/Twig/Tests/Fixtures/functions/max.test b/test/Twig/Tests/Fixtures/functions/max.test
new file mode 100644 (file)
index 0000000..e6c94af
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+"max" function
+--TEMPLATE--
+{{ max([2, 1, 3, 5, 4]) }}
+{{ max(2, 1, 3, 5, 4) }}
+{{ max({2:"two", 1:"one", 3:"three", 5:"five", 4:"for"}) }}
+--DATA--
+return array()
+--EXPECT--
+5
+5
+two
diff --git a/test/Twig/Tests/Fixtures/functions/min.test b/test/Twig/Tests/Fixtures/functions/min.test
new file mode 100644 (file)
index 0000000..660471c
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+"min" function
+--TEMPLATE--
+{{ min(2, 1, 3, 5, 4) }}
+{{ min([2, 1, 3, 5, 4]) }}
+{{ min({2:"two", 1:"one", 3:"three", 5:"five", 4:"for"}) }}
+--DATA--
+return array()
+--EXPECT--
+1
+1
+five