Fix twig_first and twig_last filters for UTF8 multibyte strings
authorKirill chEbba Chebunin <iam@chebba.org>
Thu, 31 Oct 2013 16:50:58 +0000 (20:50 +0400)
committerFabien Potencier <fabien.potencier@gmail.com>
Sun, 3 Nov 2013 09:11:57 +0000 (10:11 +0100)
lib/Twig/Extension/Core.php
test/Twig/Tests/Fixtures/filters/first.test
test/Twig/Tests/Fixtures/filters/last.test

index 32d452d..afdeb65 100644 (file)
@@ -692,7 +692,7 @@ function twig_first(Twig_Environment $env, $item)
 {
     $elements = twig_slice($env, $item, 0, 1, false);
 
-    return is_string($elements) ? $elements[0] : current($elements);
+    return is_string($elements) ? $elements : current($elements);
 }
 
 /**
@@ -707,7 +707,7 @@ function twig_last(Twig_Environment $env, $item)
 {
     $elements = twig_slice($env, $item, -1, 1, false);
 
-    return is_string($elements) ? $elements[0] : current($elements);
+    return is_string($elements) ? $elements : current($elements);
 }
 
 /**
index 853465b..90f4927 100644 (file)
@@ -5,6 +5,7 @@
 {{ {a: 1, b: 2, c: 3, d: 4}|first }}
 {{ '1234'|first }}
 {{ arr|first }}
+{{ 'Ä€é'|first }}
 --DATA--
 return array('arr' => new ArrayObject(array(1, 2, 3, 4)))
 --EXPECT--
@@ -12,3 +13,4 @@ return array('arr' => new ArrayObject(array(1, 2, 3, 4)))
 1
 1
 1
index ca3ac0c..018fdad 100644 (file)
@@ -5,6 +5,7 @@
 {{ {a: 1, b: 2, c: 3, d: 4}|last }}
 {{ '1234'|last }}
 {{ arr|last }}
+{{ 'Ä€é'|last }}
 --DATA--
 return array('arr' => new ArrayObject(array(1, 2, 3, 4)))
 --EXPECT--
@@ -12,3 +13,4 @@ return array('arr' => new ArrayObject(array(1, 2, 3, 4)))
 4
 4
 4