rubyによるedの部分的実装
背景
学校の課題で作成しました.
課題要求で正規表現をなるべく使うようにしています.
ソースコード
行番号が正規表現でパースできない
edでコマンドを実行するときは,
1, 2p
みたいに行番号を2つまで指定するのですが,
実はこの行番号,
無限に指定すると最後の2つが取られるようになっているので,
正規表現では多分パースできません.
GNU edでは普通にループして解析してるみたいですね.
2つ以上行番号を指定するコマンドは今のところ存在しないので, 実用上の問題はないでしょうけど. edを実用している人が居るかどうかは知りません.
-1を指定した時の挙動が異なる
rubyの配列を適当に使っているので, 添字に-1を指定すると末尾と解釈されておかしなことになります.
正規表現の挙動が異なる
edはposixの正規表現ですが, こちらはrubyの正規表現を適当に使っているので挙動が異なります.
行番号指定の計算を真面目に行っていない
マニュアルを読み進めないとわからなかったことですが, edの行番号指定は簡単な電卓のようなことができる仕様になっていて, これを計算するのは出来なくはないけれど結構面倒だったのでやめました.
マーク未対応
課題の要求範囲超えてましたし, 面倒だったのでやめました.