Dies Aliquanti

スポンサーサイト

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

iEPGデジタル関連続き to_s() RubyでPVRを作ろう!その6

さて大体できてきたので、データを出力するために、iEPGD::to_s()を作ります。出力をファイルに落とせば、そのままiEPGDのデータになるようにします。1行目は必ず、Content-type:になるようにしています。吐き出すフィールドの順序は、keywordsとkeywordsInSelfで管理しています。memo部も内部データでは、他のフィールドと同じような扱いになっていますが、ここでは特別扱いが必要です。 

class IEPG < Hash
    # keywords
  @@Header = "Content-type:"
  @@V1SingleContent = "x-tv-program-info"
  @@V2SingleContent = "x-tv-program-digital-info"
  @@V1MultiContent = "x-multi-tv-program-info"
  @@V2MultiContent = "x-multi-tv-program-digital-info"  
  @@V1Mandatory = [  "version:", "station:", \
                    "start:", "end:" ]
  @@V1Axuary = [  "year:",  "month:" , "date:", "program-title:", \
             "program-subtitle:",  "performer:", "genre:" , "subgenre:" ] 
  @@V2Mandatory = [  "version:", "station:", "station-name:", \
                "program-title:", "program-id:", \
                    "start:", "end:" ]
  @@V2Axuary = [  "year:",  "month:" , "date:", \
             "genre-1:", "subgenre-1:", \
             "program-subtitle:",  "performer:", "genre:" , "subgenre:" ] 

  @@Memo = "_memo:" # adding memo section, needs to be
  def to_s( )
    #to reproduce .tvipd file single content mode
    keywords = [ @@Header ]
    if self[ "version:" ] == "1"
      keywords = keywords + @@V1Mandatory + @@V1Axuary
    else
      keywords = keywords + @@V2Mandatory + @@V2Axuary
    end 
   
    keywordsInSelf = self.keys
    s = ""
    keywords.each {|key|
      # p i.to_s + " " + key + " " + self[ key ]
      s += key + self[ key ] +"\n"
      keywordsInSelf.delete( key )
    }     # if there are anything else in hash, put them for safty sake, except _memo:
    keywordsInSelf.each {|key|
      if( key != @@Memo )
        s += key + self[ key ] +"\n"
        keywordsInSelf.delete( key )
      end
    }
   
    # handle memo section
    s += "\n" + self[ @@Memo  ] +"\n"
    keywordsInSelf.delete(@@Memo )
    return s
  end # to_s end

end #class IEPG < Hash



コメント

コメントの投稿


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

トラックバック

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

FC2Ad

まとめ

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