Skip to content

Instantly share code, notes, and snippets.

@toby55kij
Created November 12, 2010 12:14
Show Gist options
  • Save toby55kij/674033 to your computer and use it in GitHub Desktop.
Save toby55kij/674033 to your computer and use it in GitHub Desktop.
HtmlBuilderをmethodMissingで書き換えてみる。
import groovy.xml.MarkupBuilder
class HtmlBuilder{
BuilderSupport builder
HtmlBuilder(BuilderSupport builder = new MarkupBuilder()){
this.builder = builder
}
def fromString(String expr, var = [:]){
def script = new GroovyShell(var as Binding).parse(expr)
script.metaClass.methodMissing = { String name, args -> this.builder.invokeMethod(name, args) }
script.run()
}
def fromFile(File file, var = [:]){
fromString(file.text, var)
}
//********** getProperty() / setProperty() **********
@Override
def getProperty(String name){
name == 'builder' ? this.builder : this.builder.getProperty(name)
}
@Override
void setProperty(String name, value){
name == 'builder' ? this.builder = value : this.builder.setProperty(name, value)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment