1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 | import groovy.xml.MarkupBuilder
String createEAD(Closure closure) {
def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
xml.mkp.xmlDeclaration(version: '1.0', encoding: 'UTF-8')
xml.'ead:ead'('xmlns:ead': 'urn:isbn:1-931666-22-9') {
closure.delegate = new Object() {
def text(Map attrs, content) {
def a = attrs.keySet().find { it in ['bold', 'italic', 'underline'] }
if(a && attrs[a]) {
xml.'ead:emph' render: a, {
text attrs.findAll({ it.key != a }), content
}
} else
text content
}
def text(content) {
if(content instanceof String)
xml.mkp.yield content
else if(content instanceof Closure)
content()
}
}
closure()
}
return writer.toString()
}
println createEAD {
text bold: true, italic: true, {
text 'Hello, '
text underline: true, 'world!'
}
}
|
Комментариев нет:
Отправить комментарий