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

No hay comentarios:

Publicar un comentario