バリケンのRuby日記 RSSフィード

2006-06-17

[] QuickMLソースコードを読む(10) /usr/lib/ruby/1.8/quickml/utils.rbの続き  QuickMLのソースコードを読む(10) /usr/lib/ruby/1.8/quickml/utils.rbの続き - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  QuickMLのソースコードを読む(10) /usr/lib/ruby/1.8/quickml/utils.rbの続き - バリケンのRuby日記  QuickMLのソースコードを読む(10) /usr/lib/ruby/1.8/quickml/utils.rbの続き - バリケンのRuby日記 のブックマークコメント

昨日の日記の続きだよ。

IO#safe_getsメソッド

class IO
  def safe_gets (max_length = 1024)
    s = ""
    until self.eof?
      c = self.read(1)
      s << c
      if s.length > max_length
        raise TooLongLine
      end
      if c == "\n"
        return s
      end
    end
    if s.empty? then nil else s end
  end
end

これは、IO#safe_getsメソッドの定義だね。IOオブジェクトから一文字ずつ読み込んだ文字を、変数sが貼り付けられている文字列オブジェクトに追加していき、その文字列オブジェクトの長さがmax_lengthよりも長くなった場合はTooLongLine例外を発生、読み込んだ文字が"\n"であったなら変数sが貼り付けられている文字列オブジェクトを返す、という動作をするよ。

またIOオブジェクトからの読み込みがeofまで到達してしまった場合は、変数sが貼り付けられている文字列オブジェクトが空の場合はnilを、そうでなければその文字列オブジェクトを返す、という動作をするよ。

とりあえず今日はここまで。

トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20060617