いくつかの用途(オレオレスクリプトの実行環境をWEBページ上に配置するとか)で, WEBページ上にシェルっぽい環境が欲しかったので, 対話部分だけ分離して実装しました.
readline, rlwrap, jLine の JavaScript 版みたいなもんです.
プロンプト prompt>
に対して入力を編集して Return
キーを押すと,
入力文字列を [
と ]
で挟んで出力します.
編集中の行内のカーソルの移動に ←
, →
, Home
, End
, Ctrl-f
, Ctrl-b
, Ctrl-a
および Ctrl-e
が使えます.
入力履歴を ↑
, ↓
, Ctrl-p
および Ctrl-n
で移動できます.
Backspace
もしくは Ctrl-h
でカーソルの前の文字を削除し, カーソルを一文字前に戻します.
Delete
もしくは Ctrl-d
でカーソル位置の文字を削除します.Ctrl-k
でカーソル位置より後ろを削除します.
同じことをするのにあなたが書くべき JavaScript は 7行.
格納するための HTML ファイル全体で 11行です.
<html><head><title>jsReadLine Demo</title>
<script type="text/javascript" src="ReadLine.js"></script>
<script type="text/javascript">
window.onload = function() {
var rl = new Algobit.ReadLine(80, 24);
var b = document.getElementsByTagName('body')[0];
b.appendChild(rl.textarea);
rl.print("prompt> ");
rl.gets = function(s) { rl.print("[" + s + "]\nprompt> "); };
}
</script></head><body></body></html>
ソースとか詳しい説明はこちら: github.com/kohyama/jsReadLine
次回! jsReadLine を使ったオレオレスクリプトの REPL!