[Templates] Proposed patch for truncate()

Nic Gibson nicg@noslogan.org
Wed, 28 Mar 2007 14:47:04 +0100


On Mar 22, 2007, at 17:39, Clinton Gormley wrote:

> Hi all
>
> The truncate filter doesn't do what I would like it to do.

Write another filter then.

>
> I would prefer if it broke on whitespace, rather than at the exact
> length that I specify.

I wouldn't for reasons explained below I don't think that what you  
are proposing
is a bad filter in any way shape or form. I think it's a very good  
idea. However,
I don't think it's a good idea to modify the existing truncate.


>
> So I'd prefer : "the cat sat on the..."
>            to : "the cat sat on the m..."
>
> However, I'd prefer : "I said supercalafragalisticexpial..."
>                  to : "I said..."
>
> I propose adding an extra parameter on the end : $min.  So if it can
> break on white space and still return a string longer than $min,  
> then it
> does so, and if not, then it breaks on $max.
>
> If $min is not specified, then the behaviour will be as before. So  
> this
> change will be backwards compatible, and won't break any existing  
> code:

Whilst it won't break any existing code it modifies the semantics of  
the existing filter.
What I mean is that you have changed the meaning of the existing  
parameter when the
new parameter is supplied because whitespace has nothing to do with  
the truncate filter
at present.  When $min is supplied, $max means something different.

I don't think that overloading the semantics in this way is a good  
idea at all.

How about truncate_words as a new filter that does what you are  
suggesting?

Of course, really this comes down to ABW I guess.

cheers

nic