Sha256: d50671a4cc06eb9dae8a2f6af9d69c5ef37f654367cbe920087d37a8143bfbf5

Contents?: true

Size: 1.42 KB

Versions: 2

Compression:

Stored size: 1.42 KB

Contents

module Simple2ch
  class Dat
    # @return [String] スレッドキー
    attr_reader :thread_key
    # @return [String] タイトル
    attr_reader :title

    # @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
      parse_dat unless @reses
      @reses
    end

    # Datを解析して過去ログかどうかを返す
    # @return [Boolean] 過去ログか否か
    def kako_log?
      parse_dat if @f_kako_log.nil?
      @f_kako_log
    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 ||= Simple2ch.fetch(dat_url)
    end

    # datファイルを解析してResを作成する
    def parse_dat
      res_num = 0
      @reses = []
      @f_kako_log = false
      fetch_dat.each_line do |l|
        res_num += 1
        begin
          if res_num==1
            title = l.split('<>').pop
            @title = title unless @title
          end
          @reses << Res.parse(res_num, l, @thre)
        rescue KakoLogException
          @f_kako_log = true
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
simple2ch-0.1.8 lib/simple2ch/dat.rb
simple2ch-0.1.7 lib/simple2ch/dat.rb