Gradle ビルド スクリプトに多数の文字列プロパティがあり、これはcamelCase
(たとえば) にあり、代わりにそれぞれを(たとえば) 文字列に"jmxConsoleWeb"
分割したいと考えています。dash-separated
jmx-console-web
これを行うための「非ハック」な方法はありますか?
余分な依存関係を気にしない場合は、Guava を使用できます。以下は、その使用方法を示す Groovy スクリプトです。
@Grab( 'com.google.guava:guava:13.0.1' )
import static com.google.common.base.CaseFormat.*
String.metaClass.caseFormat = { from, to ->
from.to( to, delegate )
}
assert 'varName'.caseFormat( LOWER_CAMEL, UPPER_UNDERSCORE ) == 'VAR_NAME'
assert 'var-name'.caseFormat( LOWER_HYPHEN, UPPER_CAMEL ) == 'VarName'
assert 'var_name'.caseFormat( LOWER_UNDERSCORE, LOWER_CAMEL ) == 'varName'
assert 'VAR_NAME'.caseFormat( UPPER_UNDERSCORE, LOWER_UNDERSCORE ) == 'var_name'
assert 'VarName'.caseFormat( UPPER_CAMEL, LOWER_HYPHEN ) == 'var-name'
もちろん、Gradle スクリプトでは、ビルド自体でそのメソッドを使用できるようにする場合は、guava を buildScript 依存関係にインポートする必要があります。
私はこのように解決しました:
public static String dashSeparated(String s) {
return s.replaceAll(/\B[A-Z]/) { '-' + it }.toLowerCase()
}
こちらもご覧ください