Mostrando entradas con la etiqueta metaclass. Mostrar todas las entradas
Mostrando entradas con la etiqueta metaclass. Mostrar todas las entradas

viernes, 30 de octubre de 2009

Mejorando el toString de un list

En una parte de mi aplicación estaba invocando al toString del List, con un resultado esperado pero no adecuado:
[tag1, tag2, tag3]
Esto es, el toString del List de toda la vida, y yo queria obtener esta lista sin los corchetes y con otro delimitador.
Lo he conseguido creando un plugin (grails create-plugin MisUtils). Edita el archivo gestor del plugin (Misutils/MisUtilsGrailsPlugin.groovy) y he modificado el método doWithDynamicMethods:


def doWithDynamicMethods = { ctx ->
List.metaClass {
toString { String delim ->
def sb = new StringBuilder()
delegate.each {
sb.append it.toString() + delim
}
sb = (sb.length() > 0 ? sb.substring(0,sb.length()-delim.length()) :sb )
}
}
}


Y lo he probado en un test de integracion


void testToStringDelim() {

def a = ['a','b','c']
println a
println a.toString('/')
assert a.toString('/') == 'a/b/c'
}



Solo queda


grails package-plugin


y en el proyecto destingo


grails install-plugin ../MisUtils/grails-mis-utils-0.1.zip


para poder usarlo