diff -r 000000000000 -r c63de9eb7045 smarty/plugins/modifier.truncate.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/smarty/plugins/modifier.truncate.php Sun Mar 23 14:59:33 2008 -0400 @@ -0,0 +1,50 @@ + + * Name: truncate
+ * Purpose: Truncate a string to a certain length if necessary, + * optionally splitting in the middle of a word, and + * appending the $etc string or inserting $etc into the middle. + * @link http://smarty.php.net/manual/en/language.modifier.truncate.php + * truncate (Smarty online manual) + * @author Monte Ohrt + * @param string + * @param integer + * @param string + * @param boolean + * @param boolean + * @return string + */ +function smarty_modifier_truncate($string, $length = 80, $etc = '...', + $break_words = false, $middle = false) +{ + if ($length == 0) + return ''; + + if (strlen($string) > $length) { + $length -= min($length, strlen($etc)); + if (!$break_words && !$middle) { + $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1)); + } + if(!$middle) { + return substr($string, 0, $length) . $etc; + } else { + return substr($string, 0, $length/2) . $etc . substr($string, -$length/2); + } + } else { + return $string; + } +} + +/* vim: set expandtab: */ + +?>