Sha256: 2641d0d01b82eea6de85ec17d96a4f73b5825fce94108ac835aa61ac9e2bfa69

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

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

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

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

    # Datを解析して過去ログかどうかを返す
    # @return [Boolean] 過去ログか否か
    def kako_log?
      parse_dat if @is_kako_log.nil?
      @is_kako_log
    end

    # @return [Bbs2chUrlValidator::UrlInfo] dat URL
    def url
      Bbs2chUrlValidator::URL.parse(@thre.url.dat)
    end

    private

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

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
simple2ch-1.1.0 lib/simple2ch/dat.rb