せっかく Node.js を入れたので覚書ページに追記してみようと考えた。
ちなみに筆者が今まで Node.js を嫌っていた理由、検索すると。。。
npm でインストール、インストール、インストール、インストール、イン(以下略
ばかりでゲンナリしたからです。
そうか、Node.js でプログラミングってインストールすることなのか!
っっって、アホか!!!
実は Python でも pip を使ったことが無い、てか必要になったことが無い。
つまり何もインストールせずに使える Gjs や JXA のほうがいいや、ということで。
Gjs があるのに何故こんなのを作る人がいるのかまったく理解できないし。
GitHub – WebReflection/node-gtk: GNOME Gtk+ bindings for NodeJS
悪口ばかり書いてもしょーがないので本題。
そんなこんなで、素の Node.js だけで何ができるか試してみよう。
とりあえず stdin はどうやるのだろう。
readline – Node.js v0.4.12 Manual & Documentation
readline モジュールがあるのか、コピペしてみよう。
なんじゃそりゃ!
node.js – How to read from stdin line by line in Node – Stack Overflow
createInterface の引数は JSON でってことなのね。
公式が間違えてどうすると思ったけど v0.4 って古いにもほどがあるページだった。
v6 の公式ドキュメントはしっかり JSON で ES6 フル活用になっている。
英語ですが。
Readline | Node.js v6.11.1 Documentation
isatty も使えるようだ。
それならパイプからの入力との振り分けも簡単だな。
#!/usr/bin/env node const ReadLine = require('readline'); const Tty = require('tty'); let readline = ReadLine.createInterface({ input: process.stdin, output: process.stdout, terminal: false }); let prompt = ""; if (Tty.isatty(0)) prompt = "May I ask your name?\n> "; readline.question(prompt, function(answer) { console.log(`Hello ${answer}`); readline.close(); //process.stdin.destroy(); });
Gjs 風にしてみました。
terminal: false を入れないとパイプで渡した文字列が表示されるので注意。
readline.close() しないと readline が終了しない場合があるので注意。
process.stdin.destroy() はいらないみたい。
あれ?意外に面白そうだぞ Node.js も。