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"なら終了し、そうでなければ表示するというだけ。
という動作は同じです。
履歴も手繰れて便利です。