Groovy の美しさは、その動的な性質です。その機能が必要なのにそこにない場合は、追加してください! アプリケーションへの便利なエントリ ポイントのどこか、またはそれを必要とするクラスの静的ブロックのどこかに、1.7.3 以降のソースから直接持ち上げたコードを追加します。
String.metaClass.'static'.tr = { String text, String source, String replacement ->
if (!text || !source) { return text }
source = expandHyphen(source)
replacement = expandHyphen(replacement)
// padding replacement with a last character, if necessary
replacement = replacement.padRight(source.size(), replacement[replacement.size() - 1])
return text.collect { original ->
if (source.contains(original)) {
replacement[source.lastIndexOf(original)]
} else {
original
}
}.join()
}
String.metaClass.'static'.expandHyphen = { String text ->
if (!text.contains('-')) { return text }
return text.replaceAll(/(.)-(.)/, { all, begin, end -> (begin..end).join() })
}
String.metaClass.tr = { String source, String replacement ->
String.tr(delegate, source, replacement)
}
これの良いところは、1.7.3 にアップグレードできるときはいつでも、このメタマジックを削除するだけでよく、他のソースを変更する必要がないことです。