Groovy如何为异常消息多行GStrings

时间:2012-02-08 11:42:25

标签: groovy gstring

Groovy错误消息的标准(或最佳做法)是什么,它不应超过一定数量的字符/行,例如80个字符?

考虑以下(工作正常)

throw new IOException("""\
        A Jenkins configuration for the given version control
        system (${vcs.name}) does not exist."""
        .stripIndent()
        .replaceAll('\n', ' '))

这将导致一行错误消息,没有缩进字符(我想要的)。但是还有其他方式(“Groovy的做法”)如何实现这一目标?如果没有,你怎么能在一个独立的Groovy应用程序中将这样的方法添加到GString类中(如果找到关于Bootstrap.groovy文件的提示但它似乎与Grails有关)?

示例:"""Consider a multi line string as shown above""".toSingleLine()

1 个答案:

答案 0 :(得分:3)

您可以使用String continuation字符,然后删除多个空格:

throw new IOException( "A Jenkins configuration for the given version control \
                        system (${vcs.name}) does not exist.".replaceAll( /( )\1+/, '$1' ) )

或者你可以将它包装在一个函数中并将其添加到String.metaClass,因为我相信你所看到的答案。

你认为Bootstrap.groovy是Grails的事情是正确的,但如果你只是在应用程序生命周期的早期设置metaClass,你应该得到相同的结果......

String.metaClass.stripRepeatedWhitespace = { delegate.replaceAll( /( )\1+/, '$1' ) }

然而,在说这一切时,我可能只是将信息保持在一行