Groovy, как многострочный GStrings для сообщений об исключениях - PullRequest
3 голосов
/ 08 февраля 2012

Каков стандарт (или лучшая практика) для сообщений об ошибках Groovy, которые не должны занимать определенное количество символов / строку, например 80 символов?

Рассмотрим следующее (работает нормально)

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

Это приведет к появлению однострочного сообщения об ошибке без символов отступа (что я хочу). Но есть ли другой способ («Groovy способ сделать это»), как этого добиться? Если нет, то как вы могли бы добавить такой метод к классу GString в автономном приложении Groovy (если найдены подсказки относительно файла Bootstrap.groovy, но, похоже, он связан с Grails)?

Пример: """Consider a multi line string as shown above""".toSingleLine()

1 Ответ

3 голосов
/ 08 февраля 2012

Вы можете использовать символ продолжения String, а затем убрать несколько пробелов:

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, но если вы просто установите метакласс на раннем этапе жизненного цикла ваших приложений, вы должны получить тот же результат ...

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

Однако, говоря все это, я бы, вероятно, просто оставил сообщение в одной строке

...