Rhino リハビリ3 標準入力する関数を作った

Rhinoの組み込み関数では標準入力が扱えないので、Javaのクラスライブラリを使う。Rhino(Javascript)には標準入出力がないので、Java の標準入出力を使う - himorogiの日記を参考に関数を実装してみた。

readStdin(msg)

コード
var readStdin = (function () {
    var stdin = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.System['in']));
    return function (msg) {
        if (typeof msg === "string") print(msg);
        return stdin.readLine();
    }
})();
使い方

REPLで動かしてみないとイマイチ分かりづらいので、上記のコードをstdin.jsをいう名前で用意して使ってみる。

$ jss.sh
Rhino 1.7 release 2 2009 03 22
js> load('stdin.js')
js> var in = readStdin('# please input')
# please input
hogehoge
js> print(in)
hogehoge

ちなみにreadStdin()の引数を省略した場合は、入力時のメッセージを表示しない。