Groovy теги разметки - PullRequest
2 голосов
/ 18 июня 2010

Есть ли способ изменить код из предыдущего ответа

import groovy.xml.MarkupBuilder

def writer = new StringWriter()
def builder = new MarkupBuilder(writer)

def awaiting = ['one', 'two', 'three']

builder.html {
    ul {
        awaiting.each { 
            li(it.toString())
        }
    }
}

println writer.toString()

так, что если вы добавите тег вместо этого, вы отправите его - например,

    builder.html{
tag{
    awaiting.each{}
    }
} return result

может быть 'ol' или 'ul', например

Ответы [ 2 ]

2 голосов
/ 18 июня 2010

Вы можете положиться на GStrings и тот факт, что вы можете вызывать функцию по ее строковому значению .

import groovy.xml.MarkupBuilder

def writer = new StringWriter()
def builder = new MarkupBuilder(writer)

def awaiting = ['one', 'two', 'three']
def tag = 'ol'

builder.html {
    "$tag" {
        awaiting.each { 
            li(it.toString())
        }
    }
}

println writer.toString()
0 голосов
/ 23 июня 2010

Вы также можете использовать invokeMethod, который более понятен, чем приведенный выше, хотя и немного дольше.

builder.html {
  invokeMethod(tag) {
    awaiting.each { 
      li it
} } }
...