groovysh で任意の文字コードでロードする
Groovy では groovy.source.encoding オプションでデフォルトの文字コードを指定できる。
これを groovysh でも利用するようにしてみた。
src に含まれている org.codehaus.groovy.tools.shell.commands.LoadCommand.groovy を用意する。
load メソッドを以下のように修正する。
void load(final URL url) { assert url != null if (io.verbose) { io.out.println("Loading: $url") } def charset = System.getProperty("groovy.source.encoding") ?: System.getProperty("file.encoding") ?: java.nio.charset.Charset.defaultCharset().name() url.eachLine(charset) { shell << it } }
GROOVY_HOME/command を作成し、修正した LoadCommand.groovy を置き、groovyc でコンパイルする。
GROOVY_HOME/conf/groovy-starter.conf のパスに command を加える。*1
# load command load !{groovy.home}/command # load required libraries load !{groovy.home}/lib/*.jar # load user specific libraries load !{user.home}/.groovy/lib/*.jar # tools.jar for ant tasks load ${tools.jar}
これで Windows のコマンドプロンプトでも UTF-8 のスクリプトを利用できる。
groovysh は commands.xml を編集すれば新規のコマンドも追加できるようだ。
*1:優先順なので先頭に加える