Dies Aliquanti

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

iEPGデジタル RubyでPVRを作ろう!その5

読んだあとのデータの処理についてですが、データベースの作り方にも関連しますが、開始時間順に取り出す必要があるのは、明らかです。開始時間でソートとかは必須でしょうね。iEPGDデータの中には開始・終了時間の情報は入っていますが、このままでは扱いにくいので、Rubyの標準の時間オブジェクトをキャッシュデータみたいな形で持つことにし、これを管理するために、::UptoDateメソッドを定義します。終了時間は年月日を含まず、開始時間より前の場合は次の日を意味するようなので、24時間プラスします。つまり、iEPG/iEPGDでは24時間を越える録画時間はサポートできないのですね。
ついでにソート用に<=>も定義しておきます。
 
class IEPG < Hash
  # keywords
  attr_reader :timeStart, :timeEnd
  # member method
  def initialize
    self.default = ""
    @timeStart = Time.now
    @timeEnd = Time.now
  end #def initialize
 
  def <=>( other )
    self.timeStart <=> other.timeStart
  end #def <=>( other )
 
  # ----------------------
  # gopher member functions
  # ----------------------
  # make @timeStart, @timeEnd upto-date
  def UptoDate
    timeNow = Time.now
    year = (self[ "year:" ] == "" ) ?  timeNow.year : self[ "year:" ].to_i
    month = (self[ "month:" ] == "" ) ?  timeNow.month : self[ "month:" ]
    day = (self[ "date:" ] == "" ) ?  timeNow.month : self[ "date:" ]
    _start = self["start:"].split(":")
    _end = self["end:"].split(":")
    @timeStart = Time.local( year, month, day, _start[0], _start[1] )
    @timeEnd = Time.local( year, month, day, _end[0], _end[1] )
    if @timeEnd <= @timeStart
        @timeEnd += 24*60*60
    end
  end #def UptoDate
 
  #
  # class methods
  #
end #class IEPG < Hash



コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://diesaliquanti.blog.fc2.com/tb.php/636-c590cd97
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

まとめ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。