[prev in list] [next in list] [prev in thread] [next in thread] 

List:       smarty-cvs
Subject:    [SMARTY-CVS] cvs: smarty / NEWS  /libs/plugins modifier.truncate.php
From:       "Monte Ohrt" <mohrt () php ! net>
Date:       2005-06-13 19:22:29
Message-ID: cvsmohrt1118690549 () cvsserver
[Download RAW message or body]

mohrt		Mon Jun 13 15:22:29 2005 EDT

  Modified files:              
    /smarty	NEWS 
    /smarty/libs/plugins	modifier.truncate.php 
  Log:
  add "middle" parameter to truncate modifier
  
  
http://cvs.php.net/diff.php/smarty/NEWS?r1=1.502&r2=1.503&ty=u
Index: smarty/NEWS
diff -u smarty/NEWS:1.502 smarty/NEWS:1.503
--- smarty/NEWS:1.502	Fri May  6 10:27:19 2005
+++ smarty/NEWS	Mon Jun 13 15:22:28 2005
@@ -1,3 +1,4 @@
+  - add "middle" parameter to truncate (monte)
   - make form input label ids optional (monte)
   - add error message for empty if/elseif statements (eykanal,
     monte)
http://cvs.php.net/diff.php/smarty/libs/plugins/modifier.truncate.php?r1=1.4&r2=1.5&ty=u
Index: smarty/libs/plugins/modifier.truncate.php
diff -u smarty/libs/plugins/modifier.truncate.php:1.4 smarty/libs/plugins/modifier.truncate.php:1.5
--- smarty/libs/plugins/modifier.truncate.php:1.4	Fri Dec 19 10:22:55 2003
+++ smarty/libs/plugins/modifier.truncate.php	Mon Jun 13 15:22:29 2005
@@ -13,29 +13,35 @@
  * Name:     truncate<br>
  * Purpose:  Truncate a string to a certain length if necessary,
  *           optionally splitting in the middle of a word, and
- *           appending the $etc string.
+ *           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)
  * @param string
  * @param integer
  * @param string
  * @param boolean
+ * @param boolean
  * @return string
  */
 function smarty_modifier_truncate($string, $length = 80, $etc = '...',
-                                  $break_words = false)
+                                  $break_words = false, $middle = false)
 {
     if ($length == 0)
         return '';
 
     if (strlen($string) > $length) {
         $length -= strlen($etc);
-        if (!$break_words)
+        if (!$break_words && !$middle) {
             $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
-      
-        return substr($string, 0, $length).$etc;
-    } else
+        }
+        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: */

-- 
Smarty CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic