--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/twig-extensions/lib/Twig/Extensions/Extension/Text.php Sat Sep 24 15:40:41 2011 +0200
@@ -0,0 +1,104 @@
+<?php
+
+/**
+ * This file is part of Twig.
+ *
+ * (c) 2009 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @author Henrik Bjornskov <hb@peytz.dk>
+ * @package Twig
+ * @subpackage Twig-extensions
+ */
+class Twig_Extensions_Extension_Text extends Twig_Extension
+{
+ /**
+ * Returns a list of filters.
+ *
+ * @return array
+ */
+ public function getFilters()
+ {
+ return array(
+ 'truncate' => new Twig_Filter_Function('twig_truncate_filter', array('needs_environment' => true)),
+ 'wordwrap' => new Twig_Filter_Function('twig_wordwrap_filter', array('needs_environment' => true)),
+ 'nl2br' => new Twig_Filter_Function('twig_nl2br_filter', array('pre_escape' => 'html', 'is_safe' => array('html'))),
+ );
+ }
+
+ /**
+ * Name of this extension
+ *
+ * @return string
+ */
+ public function getName()
+ {
+ return 'Text';
+ }
+}
+
+function twig_nl2br_filter($value, $sep = '<br />')
+{
+ return str_replace("\n", $sep."\n", $value);
+}
+
+if (function_exists('mb_get_info')) {
+ function twig_truncate_filter(Twig_Environment $env, $value, $length = 30, $preserve = false, $separator = '...')
+ {
+ if (mb_strlen($value, $env->getCharset()) > $length) {
+ if ($preserve) {
+ if (false !== ($breakpoint = mb_strpos($value, ' ', $length, $env->getCharset()))) {
+ $length = $breakpoint;
+ }
+ }
+
+ return mb_substr($value, 0, $length, $env->getCharset()) . $separator;
+ }
+
+ return $value;
+ }
+
+ function twig_wordwrap_filter(Twig_Environment $env, $value, $length = 80, $separator = "\n", $preserve = false)
+ {
+ $sentences = array();
+
+ $previous = mb_regex_encoding();
+ mb_regex_encoding($env->getCharset());
+
+ $pieces = mb_split($separator, $value);
+ mb_regex_encoding($previous);
+
+ foreach ($pieces as $piece) {
+ while(!$preserve && mb_strlen($piece, $env->getCharset()) > $length) {
+ $sentences[] = mb_substr($piece, 0, $length, $env->getCharset());
+ $piece = mb_substr($piece, $length, 2048, $env->getCharset());
+ }
+
+ $sentences[] = $piece;
+ }
+
+ return implode($separator, $sentences);
+ }
+} else {
+ function twig_truncate_filter(Twig_Environment $env, $value, $length = 30, $preserve = false, $separator = '...')
+ {
+ if (strlen($value) > $length) {
+ if ($preserve) {
+ if (false !== ($breakpoint = strpos($value, ' ', $length))) {
+ $length = $breakpoint;
+ }
+ }
+
+ return substr($value, 0, $length) . $separator;
+ }
+
+ return $value;
+ }
+
+ function twig_wordwrap_filter(Twig_Environment $env, $value, $length = 80, $separator = "\n", $preserve = false)
+ {
+ return wordwrap($value, $length, $separator, !$preserve);
+ }
+}