Node.jsひみつの花園、readline module
Nodeの公式docにはだいたいの標準モジュールのドキュメントがそろっているのだけど、なぜかreadlineという名前のモジュールだけはundocumented。-> http://nodejs.org/docs/v0.4.4/api/readline.html
中身としては、readlineのない環境(?)で簡易なGNU Readlineの機能を提供するのと、input streamから一行読み込んで何かするという枠組みの提供、っぽい。
Nodeでちょっとした機能付きの(んで標準replとは別の)replを作りたいときってどうするんかいな?と前から思ってて、Replicaを作る段になって「これ使えそう」と手探りで調べた内容をメモ。ソース見ただけともいう。
var readline = require("readline"); // First argument (input) should be Readable Stream, second (output) should be Writable Stream // here, input -> STDIN, output -> STDOUT var repl = readline.createInterface(process.stdin, process.stdout); // set prompt string repl.setPrompt("X / _ / X "); // print prompt string to output stream repl.prompt(); // get input stream var istream = repl.input; // get output stream var ostream = repl.output; // called when read one-line-input from input stream repl.on("line", function(line) { }); // called when closed repl.on("close", function() { });
他にもインタフェースあったような気がするけど、とりあえずこれだけで十分。ちょっと面白いのは、createInterfaceに指定するinput, outputが別にstdin, stdoutでなくてもいい件。まあ、inputがstdinじゃなかったらそもそもReadline機能の意味があまりないわけだが…
コードも短いしドキュメントないからdeprecatedなモジュールなんじゃね?と思う人もいるかもしれないけど、標準のrepl moduleが確かこれに依存してたのでそんなに簡単には消えない…はず。ryanに直接聞いたとかじゃないから、確証はないけど。