[stringtemplate-interest] Odd even row formatting

Trevor Griffiths tgriffiths at liveworld.com
Thu May 15 16:09:53 PDT 2008


Hi,

The topic is how to change the style of rows in a table based on their  
odd or even index value.
Or more generally, given a set of ordered data to iterate over how to  
make the style dependent upon the data's position in the the set. That  
is on the index of the data.

The current ST suggestion (at least in the  documentation) is to set  
up this kind of template structure:

$subjectList: oddRow(), evenRow()$

Where the oddRow template might be:

<tr>
     <b><td>$it.subject$</td><td>$it.count$</td></b>
</tr>

And the evenRow template might be:

<tr bgcolor= red>
     <td>$it.subject$</td><td>$it.count$</td>
</tr>

The subjectList is iterated over and every even row will have a red  
background.

One problem I have with this approach is that it seems to violate the  
DRY principle.
The oddRow and evenRow have to be virtually copies of each other. I  
picked a simple row structure, it could well be a lot more complicated  
than this.

 From a separation of concerns perspective, is there any reason why I  
shouldn't be able to explicitly key off the index, either through an  
odd/even boolean of some sort? This would allow this kind of expression:

<tr $if (odd)$ bgcolor= red $endif$ >
     <td>$it.subject$</td><td>$it.count$</td>
</tr>

And while odd/even is a fairly common requirement, it begs the general  
question of why can't I change the presentation of the data based on  
its index value? I'm not attempting to change the model. I am simply  
trying to: "operate on a set of incoming read-only data values, called  
attributes..."

Actually, I did just implement odd/even in the model by computing odd/ 
even as each subject line bean is loaded in to an array of beans. The  
additional subject line field, "odd," is empty if the respective line  
is even. (Each subject line bean has the attributes: subject, count,  
odd). The "odd" field amounts to meta data for the line's position in  
the array.

But, now don't  we have a case of the model entangled with the view?  
there seems something slightly awry here or is it just me :-)

Anyway, I'd be interested in your opinion on this topic:

So, in conclusion, Is it reasonable to have an odd/even attribute, if  
not the index, available in the presentation layer, or is this the  
first step on a slippery slope :-)

If the index is made available, then it would obviously need to be  
compared with some value, which breaks the simplicity of the "does it  
exist" rule.

Thanks

Trev...



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org:8080/pipermail/stringtemplate-interest/attachments/20080515/2349ba67/attachment.html 


More information about the stringtemplate-interest mailing list