No Programming, No Life

プログラミング関連の話題や雑記

JLineの最小サンプル in Groovy

はじめに

Groovy! (挨拶)

突然ですが、
航海日誌: 2012-01-09: [Scala][Java] JLineの最小サンプル
をGroovyでも書いてみました。

JLineは、コンソールアプリケーションにおいてユーザの入力の編集と読み込みを行うJavaライブラリです。 タブ補間、コマンド履歴、パスワードマスキング、キーバインドのカスタマイズ、他のコンソールアプリケーションをつなぐパススルー処理などの機能があります。

JLine - Java console input library プロジェクト日本語トップページ - SourceForge.JP

Download

Groovyの場合、@GrabがあるからDownloadは不要。ここMaven Repositoryの定義が書いてあるので、これをもとにスクリプトの先頭にGrab定義を書けばスクリプト実行時に自動でダウンロードしクラスパスも通してくれた状態で実行できます。

@GrabResolver(name='jline', root='http://jline.sourceforge.net/m2repo')
@Grab(group='jline', module='jline', version='0.9.9')

今回はこんな感じ。

Hello

ただ単に入力プロンプトを出力し、入力したコマンド文字を再表示するサンプルです。

ソース

実行結果
$ groovy helloJLine.groovy 
> aaa
--> [aaa]
> bbb
--> [bbb]
> exit
$ groovy helloJLine.groovy 
> ccc
--> [ccc]
(Ctrl + D)
$

whileのあたりが元記事の実装と少し違うけど

ConsoleReaderを生成して、そいつにプロンプトを表示させ入力待ちにする(ConsoleReader#readLine)。
入力文字がnullか"exit"なら終了し、そうでなければ表示するというだけ。

という動作は同じです。
履歴も手繰れて便利です。