added a nl2br filter
authorFabien Potencier <fabien.potencier@gmail.com>
Sun, 18 Dec 2011 11:28:42 +0000 (12:28 +0100)
committerFabien Potencier <fabien.potencier@gmail.com>
Sun, 18 Dec 2011 11:36:07 +0000 (12:36 +0100)
CHANGELOG
doc/filters/index.rst
doc/filters/nl2br.rst [new file with mode: 0644]
lib/Twig/Extension/Core.php
test/Twig/Tests/Fixtures/filters/nl2br.test [new file with mode: 0644]

index 00be5eb..175e98a 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
 * 1.5.0
 
+ * added a nl2br filter
  * added a random function
  * added a way to change the default format for the date filter
  * fixed the lexer when an operator ending with a letter ends a line
index 599f2cf..6593a06 100644 (file)
@@ -12,6 +12,7 @@ Filters
     convert_encoding
     title
     capitalize
+    nl2br
     upper
     lower
     striptags
diff --git a/doc/filters/nl2br.rst b/doc/filters/nl2br.rst
new file mode 100644 (file)
index 0000000..366ca83
--- /dev/null
@@ -0,0 +1,19 @@
+``nl2br``
+=========
+
+The ``nl2br`` filter inserts HTML line breaks before all newlines in a string:
+
+.. code-block:: jinja
+
+    {{ "I like Twig.\nYou will like it too."|nl2br }}
+    {# outputs
+
+        I like Twig.<br />
+        You will like it too.
+
+    #}
+
+.. note::
+
+    The ``nl2br`` filter pre-escapes the input before applying the
+    transformation.
index d6bd7b8..9e5cf20 100644 (file)
@@ -83,6 +83,7 @@ class Twig_Extension_Core extends Twig_Extension
             'upper'      => new Twig_Filter_Function('strtoupper'),
             'lower'      => new Twig_Filter_Function('strtolower'),
             'striptags'  => new Twig_Filter_Function('strip_tags'),
+            'nl2br'      => new Twig_Filter_Function('nl2br', array('pre_escape' => 'html', 'is_safe' => array('html'))),
 
             // array helpers
             'join'    => new Twig_Filter_Function('twig_join_filter'),
diff --git a/test/Twig/Tests/Fixtures/filters/nl2br.test b/test/Twig/Tests/Fixtures/filters/nl2br.test
new file mode 100644 (file)
index 0000000..6545a9b
--- /dev/null
@@ -0,0 +1,14 @@
+--TEST--
+"nl2br" filter
+--TEMPLATE--
+{{ "I like Twig.\nYou will like it too.\n\nEverybody like it!"|nl2br }}
+{{ text|nl2br }}
+--DATA--
+return array('text' => "If you have some <strong>HTML</strong>\nit will be escaped.")
+--EXPECT--
+I like Twig.<br />
+You will like it too.<br />
+<br />
+Everybody like it!
+If you have some &lt;strong&gt;HTML&lt;/strong&gt;<br />
+it will be escaped.