1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
<?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> */ class Twig_Extensions_Extension_Text extends Twig_Extension { /** * {@inheritdoc} */ public function getFilters() { return array( new Twig_SimpleFilter('truncate', 'twig_truncate_filter', array('needs_environment' => true)), new Twig_SimpleFilter('wordwrap', 'twig_wordwrap_filter', array('needs_environment' => true)), ); }
/** * {@inheritdoc} */ public function getName() { return 'Text'; } }
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 breakpoint is on the last word, return the value without separator. if (false === ($breakpoint = mb_strpos($value, ' ', $length, $env->getCharset()))) { return $value; }
$length = $breakpoint; }
return rtrim(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 rtrim(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); } }
class_alias('Twig_Extensions_Extension_Text', 'Twig\Extensions\TextExtension', false);
|