あおきです。

テキストバッファを作りました。
単に String の拡張みたいな StringBuffer と、マルチバイト文字を認識する
TextBuffer で、ともに実装は gapped buffer です。

特徴。以下のようなことができます。

  buf = TextBuffer.new

  m = buf.new_mark
  m.insert 'abc' * 100
  m.forward 100

  m2 = buf.new_mark
  m2.forward 102

  m[ m2 ]         # m から m2 まで ('bc')
  m2[ m ]         # これも m から m2 まで ('bc')
  m[ m2 + 3 ]     # m から m2 の 3 文字先まで
  m2.forward 5    # 5 文字前へ移動
  m.delete( m2 )  # m から m2 まで削除

  m.move_to buf.head          # buf.head (バッファ先頭) に移動
  buf[ buf.head, buf.tail ]   # バッファ全体 (== to_s)

また、TextBuffer のほうは改行を自動認識し、\n \r\n \r のすべてを
(同時に)一文字の改行文字として扱います。


以上宣伝でした。
RAA かぼくのサイト(http://www1.u-netsurf.ne.jp/~brew/mine/)からどうぞ。
-------------------------------------------------------------------
あおきみねろう