Sha256: 5c6d43270b08168f51239db4e1d79e481a498cca91d565972b29b044adbb4b79

Contents?: true

Size: 1.29 KB

Versions: 4

Compression:

Stored size: 1.29 KB

Contents

module Simple2ch
  class Dat
    # @return [String] スレッドキー
    attr_reader :thread_key

    # @param [Thre] thre スレッド
    def initialize(thre)
      @thre = thre
      @thread_key = thre.thread_key
      @data = nil
      @reses = nil
      @f_kako_log = nil
    end

    # Datを解析して、レスを返す
    # @return [Array<Res>] レス
    def reses
      @reses || parse_dat[0]
    end

    # Datを解析して過去ログかどうかを返す
    # @return [Boolean] 過去ログか否か
    def kako_log?
      @f_kako_log || parse_dat[1]
    end

    private
    # datのURLを返す
    # @return [URI] datのURL
    def dat_url
      @thre.board.url+'dat/'+(@thread_key+'.dat')
    end

    # datファイルを取得する
    # @return [String] 取得したdatファイルの中身
    def fetch_dat
      @data || (@data = Simple2ch.fetch dat_url)
    end

    # datファイルを解析してResを作成する
    # @return [Array<Res>] 全てのレス
    def parse_dat
      res_num = 0
      tmp = []
      f_kako_log = false
      fetch_dat.each_line do |l|
        res_num += 1
        begin
          tmp << Res.parse(res_num, l)
        rescue KakoLogException
          f_kako_log = true
        end
      end
      return @reses=tmp, @f_kako_log=f_kako_log
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
simple2ch-0.1.1 lib/simple2ch/dat.rb
simple2ch-0.1.0 lib/simple2ch/dat.rb
simple2ch-0.0.2 lib/simple2ch/dat.rb
simple2ch-0.0.1 lib/simple2ch/dat.rb