I need a quick way to truncate strings! I’m surprised that neither MooTools’ String.js or String.Extras.js has such a method. They have so many super-awesome functions, methods and extensions (I especially love the Date.js extensions!!). Yeah, I really love mootools, and I feel compelled to share with the community. So anyway, I wrote out a simple, straightforward String.truncate() function:
String.<span style="color:#660066;">implement</span><span style="color:#009900;">(</span><span style="color:#009900;">{</span> <span style="color:#006600;font-style:italic;">/** * String.truncate(max, atChar, trail) * * ++All parameters are optional. * @param max = (integer) maximum length of truncated string. Defaults to 100 chars. * @param atChar = (string) truncate at the last index of this string. If not found, just truncates to max length. * If null, does not search and truncates to max length. * @param trail = (string) what you want appended to the end of the returned string * * @author Michael Fuery, Fuery Solutions, Inc. http://www.fuerysolutions.com/ * * +Requires MooTools Core 1.2.2 */</span> truncate<span style="color:#339933;">:</span><span style="color:#003366;font-weight:bold;">function</span><span style="color:#009900;">(</span>max<span style="color:#339933;">,</span> atChar<span style="color:#339933;">,</span> trail<span style="color:#009900;">)</span><span style="color:#009900;">{</span> <span style="color:#003366;font-weight:bold;">var</span> s <span style="color:#339933;">=</span> <span style="color:#000066;font-weight:bold;">this</span>.<span style="color:#660066;">trim</span><span style="color:#009900;">(</span><span style="color:#009900;">)</span><span style="color:#339933;">;</span> <span style="color:#000066;font-weight:bold;">if</span><span style="color:#009900;">(</span>s.<span style="color:#660066;">length</span><span style="color:#339933;">&</span>lt<span style="color:#339933;">;</span><span style="color:#cc0000;">1</span><span style="color:#009900;">)</span> <span style="color:#000066;font-weight:bold;">return</span> <span style="color:#3366cc;">''</span><span style="color:#339933;">;</span> <span style="color:#000066;font-weight:bold;">if</span><span style="color:#009900;">(</span><span style="color:#339933;">!</span>$defined<span style="color:#009900;">(</span>max<span style="color:#009900;">)</span><span style="color:#009900;">)</span> <span style="color:#003366;font-weight:bold;">var</span> max <span style="color:#339933;">=</span> <span style="color:#cc0000;">100</span><span style="color:#339933;">;</span> <span style="color:#000066;font-weight:bold;">else</span> max <span style="color:#339933;">=</span> max.<span style="color:#660066;">toInt</span><span style="color:#009900;">(</span><span style="color:#009900;">)</span><span style="color:#339933;">;</span> <span style="color:#000066;font-weight:bold;">if</span><span style="color:#009900;">(</span><span style="color:#339933;">!</span>$defined<span style="color:#009900;">(</span>atChar<span style="color:#009900;">)</span><span style="color:#009900;">)</span> <span style="color:#003366;font-weight:bold;">var</span> atChar<span style="color:#339933;">=</span><span style="color:#3366cc;">' '</span><span style="color:#339933;">;</span> <span style="color:#006600;font-style:italic;">// break at space</span> <span style="color:#000066;font-weight:bold;">else</span> <span style="color:#000066;font-weight:bold;">if</span><span style="color:#009900;">(</span>atChar <span style="color:#339933;">==</span> <span style="color:#003366;font-weight:bold;">null</span><span style="color:#009900;">)</span> <span style="color:#003366;font-weight:bold;">var</span> atChar<span style="color:#339933;">=</span><span style="color:#003366;font-weight:bold;">false</span><span style="color:#339933;">;</span> <span style="color:#000066;font-weight:bold;">if</span><span style="color:#009900;">(</span><span style="color:#339933;">!</span>$defined<span style="color:#009900;">(</span>trail<span style="color:#009900;">)</span><span style="color:#009900;">)</span> <span style="color:#003366;font-weight:bold;">var</span> trail <span style="color:#339933;">=</span> <span style="color:#3366cc;">'...'</span><span style="color:#339933;">;</span> <span style="color:#000066;font-weight:bold;">if</span><span style="color:#009900;">(</span>s.<span style="color:#660066;">length</span> <span style="color:#339933;">&</span>gt<span style="color:#339933;">;</span> max<span style="color:#009900;">)</span> <span style="color:#009900;">{</span> <span style="color:#003366;font-weight:bold;">var</span> i<span style="color:#339933;">=</span><span style="color:#cc0000;">0</span><span style="color:#339933;">;</span> s <span style="color:#339933;">=</span> s.<span style="color:#660066;">slice</span><span style="color:#009900;">(</span><span style="color:#cc0000;">0</span><span style="color:#339933;">,</span>max<span style="color:#009900;">)</span><span style="color:#339933;">;</span> <span style="color:#000066;font-weight:bold;">if</span><span style="color:#009900;">(</span>atChar<span style="color:#009900;">)</span><span style="color:#009900;">{</span> <span style="color:#000066;font-weight:bold;">if</span><span style="color:#009900;">(</span><span style="color:#009900;">(</span>i <span style="color:#339933;">=</span> s.<span style="color:#660066;">lastIndexOf</span><span style="color:#009900;">(</span>atChar<span style="color:#009900;">)</span><span style="color:#009900;">)</span> <span style="color:#339933;">!=</span> <span style="color:#339933;">-</span><span style="color:#cc0000;">1</span><span style="color:#009900;">)</span><span style="color:#009900;">{</span> s <span style="color:#339933;">=</span> s.<span style="color:#660066;">substring</span><span style="color:#009900;">(</span><span style="color:#cc0000;">0</span><span style="color:#339933;">,</span> i<span style="color:#009900;">)</span><span style="color:#339933;">;</span> <span style="color:#009900;">}</span><span style="color:#000066;font-weight:bold;">else</span><span style="color:#009900;">{</span> s <span style="color:#339933;">=</span> s.<span style="color:#660066;">substring</span><span style="color:#009900;">(</span><span style="color:#cc0000;">0</span><span style="color:#339933;">,</span> max<span style="color:#009900;">)</span><span style="color:#339933;">;</span> <span style="color:#009900;">}</span> <span style="color:#009900;">}</span> s <span style="color:#339933;">+=</span> trail<span style="color:#339933;">;</span> <span style="color:#009900;">}</span> <span style="color:#000066;font-weight:bold;">return</span> s<span style="color:#339933;">;</span> <span style="color:#009900;">}</span><span style="color:#009900;">}</span><span style="color:#009900;">)</span><span style="color:#339933;">;</span>
Leave a Reply