Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detecting first and last item inside a Groovy each{} closure

I am using Groovy's handy MarkupBuilder to build an HTML page from various source data.

One thing I am struggling to do nicely is build an HTML table and apply different style classes to the first and last rows. This is probably best illustrated with an example...

table() {   thead() {     tr(){       th('class':'l name', 'name')       th('class':'type', 'type')       th('description')     }   }   tbody() {     // Add a row to the table for each item in myList     myList.each {       tr('class' : '????????') {         td('class':'l name', it.name)         td('class':'type', it.type)         td(it.description)       }     }   }    } 

In the <tbody> section, I would like to set the class of the <tr> element to be something different depending whether the current item in myList is the first or the last item.

Is there a nice Groovy-ified way to do this without resorting to something manual to check item indexes against the list size using something like eachWithIndex{}?

like image 715
tomtheguvnor Avatar asked Oct 25 '10 07:10

tomtheguvnor


1 Answers

You could use

if(it == myList.first()) {    // First element }  if(it == myList.last()) {    // Last element } 
like image 169
sbglasius Avatar answered Oct 14 '22 03:10

sbglasius