Permalink
Browse files

fixed json_encode filter (thanks to Koc for the fix)

  • Loading branch information...
1 parent 066d561 commit 612fa7bc514ab88110c974ba5a330ef2ec2c2363 @fabpot fabpot committed Jun 24, 2011
Showing with 31 additions and 1 deletion.
  1. +19 −1 lib/Twig/Extension/Core.php
  2. +12 −0 test/Twig/Tests/Fixtures/filters/json_encode.test
@@ -48,7 +48,7 @@ public function getFilters()
// encoding
'url_encode' => new Twig_Filter_Function('twig_urlencode_filter'),
- 'json_encode' => new Twig_Filter_Function('json_encode'),
+ 'json_encode' => new Twig_Filter_Function('twig_jsonencode_filter'),
// string filters
'title' => new Twig_Filter_Function('twig_title_string_filter', array('needs_environment' => true)),
@@ -232,6 +232,24 @@ function twig_urlencode_filter($url, $raw = false)
return urlencode($url);
}
+function twig_jsonencode_filter($value, $options = 0)
+{
+ if ($value instanceof Twig_Markup) {
+ $value = (string) $value;
+ } elseif (is_array($value)) {
+ array_walk_recursive($value, '_twig_markup2string');
+ }
+
+ return json_encode($value, $options);
+}
+
+function _twig_markup2string(&$value)
+{
+ if ($value instanceof Twig_Markup) {
+ $value = (string) $value;
+ }
+}
+
function twig_array_merge($arr1, $arr2)
{
if (!is_array($arr1) || !is_array($arr2)) {
@@ -0,0 +1,12 @@
+--TEST--
+"json_encode" filter
+--TEMPLATE--
+{{ "foo"|json_encode|raw }}
+{{ foo|json_encode|raw }}
+{{ [foo, "foo"]|json_encode|raw }}
+--DATA--
+return array('foo' => new Twig_Markup('foo'))
+--EXPECT--
+"foo"
+"foo"
+["foo","foo"]

0 comments on commit 612fa7b

Please sign in to comment.