Kawa.netブログ(川崎有亮)

アクセスカウンタ

help リーダーに追加 RSS XML::FeedPP バージョン 0.21 をリリース

<<   作成日時 : 2007/01/22 01:20   >>

トラックバック 0 / コメント 0

Pure Perl 環境で RSS/Atom などのフィードを操作する XML::FeedPP モジュール
バージョン 0.21 をリリースしました。間もなく CPAN でも利用できるようになるかと。
主な改良点は以下の通りです。

(これまでの使い方)
my $feed = XML::FeedPP::RSS->new();
$feed->link( $link );
$feed->title( $title );
$feed->description( $desc );
$feed->pubDate( $date );

(今回サポートした新しい使い方)
my $hash = {
    link => $link,
    title => $title,
    description => $desc,
    pubDate => $date,
};
my $feed = XML::FeedPP::RSS->new( %$hash );
コンストラクタの新しい呼び出し方式を追加しました。
コンストラクタの引数で、フィード(チャンネル)内の各要素の初期値を設定できます。
ハッシュを渡せば一括設定できるため、要素ごとにメソッドを呼ばずに済みます。
従来の、空インスタンス作成後にメソッド呼び出しする手順も、引き続き利用できます。

(これまでの使い方)
my $item = $feed->new( $link );
$item->title( $title );
$item->description( $desc );
$item->pubDate( $date );

(今回サポートした新しい使い方)
my $hash = {
    link => $link,
    title => $title,
    description => $desc,
    pubDate => $date,
};
my $item = $feed->add_item( %$hash );
コンストラクタと同様に、add_item() メソッドでも新しい呼び出し方式に対応しました。
add_item() メソッドの引数で、アイテム内の各要素の初期値を設定できます。
ハッシュを渡せば一括設定できるため、要素ごとにメソッドを呼ばずに済みます。
従来の、空アイテム作成後にメソッド呼び出しする手順も、引き続き利用できます。

(これまでの使い方)
@item1 = grep { $_->link() =~ qr(^http://www.kawa.net/) } $feed->get_item();
@item2 = grep { $_->title() =~ qr(^http://www.kawa.net/) &&
                $_->description() =~ qr(javascript)i } $feed->get_item();

(今回サポートした新しい使い方)
@item1 = $feed->match_item( link => qr(^http://www.kawa.net/) );
@item2 = $feed->match_item( title => qr(ajax)i, description => qr(javascript)i );
match_item() メソッドを追加しました。
全てのアイテム要素を正規表現で検索し、マッチしたアイテム要素のみを取り出します。
配列コンテキストで呼び出した場合は、マッチした全てのアイテム要素を返します。
スカラーコンテキストで呼び出した場合は、最初にマッチしたアイテム要素のみを返します。
従来、get_item() メソッドで全要素を取り出してからループなどで特定のアイテムを
抽出するような処理を書く場合があれば、match_item() を使うとより簡潔に記述できます。


※以上、Mike Sierra さんに頂いたアイディアを元に実装しました。


この他にも、sort_item() メソッドを改良してタイムゾーン付の時刻を持つアイテムを正しく並び替えるようにしました。
従来はタイムゾーンを無視していたため、merge() メソッド等で複数のフィードを合成した場合などで、
異なるタイムゾーンのアイテムが含まれていると、時差の関係で順序が入れ替わる場合がありました。

設定テーマ

関連テーマ 一覧

月別リンク

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文

EDGE Now!