XML::FeedPP バージョン 0.21 をリリース

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

この記事へのコメント

Floredtt
2013年10月11日 19:29






borse outlet vendita

ナイキジョーダン

ジョーダンスニーカー

chanel handbags

chanel outlet

ヴィトン キーケース

ナイキジョーダン
Celesibs
2013年10月26日 15:47
UGG(アグ ブーツ) 5612-1001631 ウィメンズ DAKOTA エスプレッソ

miumiu アウトレット

chloe AURORE オーロラ 長財布

プラダ 店舗

クロエ 長財布 二つ折り レディース シャドウ ナツメグ・ブラウン

プラダ アウトレット 財布

escarpins louboutin
Rosndbeb
2013年10月29日 07:25
UGG(アグ ブーツ) 1000404 ウィメンズ TAWNIE サンド

prada 店舗

クロエ エルシー 財布 ELSIE 長財布

ミュウミュウ バッグ アウトレット

coach 店舗

ヴィトン ポルトフォイユ 財布

red bottom shoes
wolfkobe8
2013年11月27日 22:06
多くの人々が、Seiko 腕時計 世界のさまざまな理解とそこに。良い時計は防水でなければなりません30メートルまたは50メートルまでの防水時計の大半 はスイスの人々に感じています。そして、多くの人が考える、そのテーブルは、その適切な水深に置くことができることを意味しますと何の問題。間違っが!スイスの時計·ディクショナリに30メートルまたは50メート セイコー時計 クロノグラフ ルの生活水を意味している。ダイビング時計のサウナを身に着けている一部の人々 。サウナ、室外温度が常温よりもはるかに高いですが、この温度変化は、時期尚早の防水パッキンを見につながるん。老化さえダイブテーブルは、またガスケットを交換する前に処方されることがありますと、防水失いその本当の意味は、次のとおりです。あなたのテーブルを湿らないようにしよう、私は水入口100メートルの水の深さを置くことができる場合にのみときリアルダイブテーブルしばしばセイコー時計 ソーラー。

この記事へのトラックバック