[ create a new paste ] login | about

Link: http://codepad.org/34sZ5I7v    [ raw code | fork ]

fgtrjhyu - Plain Text, pasted on Mar 18:
class AbstractKeyValue {
  def key
  def value
  AbstractKeyValue(key, value){
   this.key = key
   this.value = value
  }
}

class KeyValue extends AbstractKeyValue {
  KeyValue(key, value) {
    super(key, value)
  }
  def build(dest) {
    dest."${key}"(value)
  }
}

class KeyList extends AbstractKeyValue {
  def opts
  KeyList(key, value, opts) {
    super(key, value)
    this.opts = opts
  }
  KeyList(key, value) {
    this(key, value, null)
  }
  def build(dest) {
    dest."${key}"(opts) {
      for(v in value) {
        v.build(dest)
      }
    }
  }
}


@Newify([KeyValue,KeyList])
def makeList() { [
  KeyValue("key1", "value1"),
  KeyValue("key2", "value2"),
  KeyList("key3", [
    KeyValue("key3-1", "value3-1"),
    KeyValue("key3-2", "value3-2")
  ])
] }

def sw = new StringWriter()
def xml = new groovy.xml.MarkupBuilder(sw)
xml.doubleQuotes = true
new KeyList("langs", makeList(), [type: 'current']).build(xml)

def expect = '''\
<langs type="current">
  <key1>value1</key1>
  <key2>value2</key2>
  <key3>
    <key3-1>value3-1</key3-1>
    <key3-2>value3-2</key3-2>
  </key3>
</langs>'''

assert sw.toString() == expect



Create a new paste based on this one


Comments: