Проход по списку в многострочной строке Groovy - PullRequest
2 голосов
/ 02 июня 2010

Я пытаюсь создать многострочную строку в Groovy. У меня есть список строк, которые я хотел бы перебрать в многострочном. Я не уверен, что синтаксис для этого. Что-то вроде ниже ...

    def html = """\
       <ul>
          <li>$awaiting.each { it.toPermalink()}</li>
       </ul>
     """

Ответы [ 2 ]

6 голосов
/ 02 июня 2010

следующее:

class PLink {
  String name
  String toPermalink() {
    "link->$name"
  }
}
def awaiting = [ new PLink( name:'one' ), new PLink( name:'two' ), new PLink( name:'three' ) ]
def html = """<ul>
  <li>${awaiting.collect { it.toPermalink() }.join( "</li><li>" )}</li>
</ul>"""

Производит этот вывод:

<ul>
  <li>link->one</li><li>link->two</li><li>link->three</li>
</ul>

Он в основном вызывает метод для каждого элемента, collects результаты возвращаются в другой список, а затем joins список вместе в строку

1 голос
/ 02 июня 2010

Рассматривали ли вы использование MarkupBuilder? Они предоставляют действительно хороший способ построения HTML или XML, особенно если вы хотите встроить циклические конструкции или условную логику.

Например:

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()

Результат:

* +1007 *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...