Dies Aliquanti

スポンサーサイト

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

iEPGクラス再び、RubyでPVRを作ろう!その15

暫くぶりのPVRの話ですが、実は全体の実装も大体終わり、αバージョンみたいなものは動き始めています。もちろん、不具合もあって直さなければならないのですが、全体を見直すと、Rubyっぽくないというのもある一方で、ダサダサなところもあって書き直したりしてます。

まずは、録画情報を管理するIEPGDクラスですが、いろいろアホなことをやっていたのをなおしたら、結構すっきりしました(たぶん)。いままでの実装は恥さらしですが、気を取りなおして行きましょう。

IEPGDクラス
iepg/iepgd番組情報を管理するクラス。v1/v2とも対応しているが、両方のクラスをmixして使うことは、(少なくとも今のところ)できません。Hashクラスを継承していて、iepg情報の「ヘッダ部のフィールド名(文字列)」を「key」、「フィールドの値」を「value」として実装している。ただし、メモ部も内部的には、フィールド名"_memo:"のヘッダ部の情報として扱っている。
[例]
iepgd = IEPGD.new
iepgd["program-title:"]="連続テレビ小説つばさ" # 番組名をセット

その他、番組開始、終了時刻はリードオンリーメンバー変数(Timeクラス)@timeStart, @timeEndでアクセス可能。時刻に関するヘッダ部のフィールドを変更した場合は、自動的にこれらの変数もアップデートされる。

メソッド
to_s( format = nil )
引数formatの指定が省略された場合は、複数の行からなる文字列を返す。この文字列はiepgd情報を含む。引数format(Stringクラス)を指定した場合は、要約モードとしてiepgd情報の要約を文字列として返す。format文字列は、iepgd情報の各フィールドをplace holderを通じて指定する。place folderは”%<フィールド名>"であらわされる。このほか、%D,%eDは開始、終了時刻の年月日をYYYYMMDD形式で、%T,%eTは開始、終了時刻の時刻をHHMM形式であらわす。%%は%自身をあらわす。
[例]
iepgd = IEPGD.new
iepgd["program-title:"]="連続テレビ小説つばさ"
p iepgd.to_s("%%_%program-title:") # => "%_連続テレビ小説つばさ"

sameProgram?( other )
=~( other )
IEPGクラスotherとselが同じ番組の場合、trueをそうでなければfalseを返す。selfとotherは同じバージョン(version1/iepg形式、version2/iepgd形式)でなければならず、異なるバージョンの場合、例外がraiseされる。version1同士の場合は、"station:”、"program-title:"の各フィールドおよび、番組開始日時、時刻が一致した場合同じ番組とみなされる。version2同士の場合は、"station-name:"、"program-id:"が一致した場合同じ番組とみなされる。

クラスメソッド
IEPG.File2Array( filespec )
filespecで与えられたファイルから、iepgd情報を読み、IEPGDクラスのインスタンスのArrayを返す。
iepgd情報は、複数の番組情報を含む場合があるので、Arrayを返す仕様になっている。

その他のメソッドはおおむね下請け。

あらら、文字数制限ををオーバーしてしまったみたいなので、ソースはこちら



コメント

コメントの投稿


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

トラックバック

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

FC2Ad

まとめ

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