Insider_Blog_Header-2.png
Thursday, May 14, 2009

Why doesn’t Mootools have a String.truncate() method?

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;">&amp;</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;">&amp;</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>
Posted by MerusCase on Thursday May 14, 2009 0 Comments

Labels: Engineering

Leave a Reply

Meet MerusCase

We're the only cloud-based legal practice management system trusted by thousands of lawyers to manage cases, documents, billing, and beyond. Learn more about MerusCase & schedule a demo today!

Become an Insider:

Recent Posts