diff -r 000000000000 -r 7f95f8617b0b vendor/twig-extensions/lib/Twig/Extensions/Extension/Text.php --- /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 @@ + + * @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 = '
') +{ + 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); + } +}