テキスト差分のJavaScriptプログラム Rubyへの移植状況

前に書きましたテキスト差分をとるJavaScriptプログラムですが、Rubyへの移植がすこしずつ進んでいます。

案の定、JavaScritpとRubyの似て非なる文法にかなり悩まされましたので、そのポイントなど。

  • 配列の負のインデックス
    • JavaScritpでは配列に負のインデックスが許されるようで、もとのプログラムでもこれが使われています。一方Rubyの配列では負のインデックスは許されませんので、動作が異常になります。しかも負のインデックスでアクセスしてもエラーにはなりません。許されますが、動作が異なります(詳細はコメント参照)。
  • インクリメント演算子
    • たぶんRubyに慣れた人には常識ですが、Rubyでは++演算子が使えませんので「+=1」に修正する必要があります。しかも、これも書いていてもエラーになりません。
  • 配列のsliceメソッド
    • 元のプログラムではslice(0)で配列をコピーしている箇所がありますが、Rubyでは意図とおりに動きません。
  • 配列のmapメソッド
    • 配列をまとめて別の配列に変換するmapメソッドですが、Rubyでは元プログラムのようにブロック内にreturnを書いてしまうと、mapメソッドを含む関数から抜けてしまいます。

以上、まだあるかもしれませんが、もうすこしでRuby版テキスト差分プログラムが動きそうです。

しかし、正しくない文法を書いてもエラーにならない場合があるというのが、Rubyのいやらしいところですね。