SweetPotato::Plagger このページをアンテナに追加 RSSフィード

2007-07-01

[] Filter::SortEntries  Filter::SortEntries - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  Filter::SortEntries - SweetPotato::Plagger  Filter::SortEntries - SweetPotato::Plagger のブックマークコメント

フィード内のエントリを並べ替えるFilter。

Plagger/Plugin/Filter/SortEntries.pm

package Plagger::Plugin::Filter::SortEntries;
use strict;
use base qw( Plagger::Plugin );

sub register {
    my ($self, $context) = @_;
    $context->register_hook(
        $self,
        'update.feed.fixup' => \&update,
    );
}

sub update {
    my ($self, $context, $args) = @_;
    return unless defined $self->conf->{expression};
    my @entries = sort { eval $self->conf->{expression} } $args->{feed}->entries;
    $args->{feed}->{entries} = \@entries;
}

1;

行儀が悪いにも程がある。

config.yaml

この例では日付が古い順に整列する。

  # ...
  - module: Filter::SortEntries
    config:
      expression: |
        use Plagger::Date;
        Plagger::Date->compare($a->date, $b->date);

nyarla-netnyarla-net2007/07/01 10:27自分も同じ名前で似たようなプラグイン作ってます。中身が微妙に違いますが。
http://nyarla.net/blog/plagger24

SweetPotatoSweetPotato2007/07/01 10:47しまった!車輪の再生産になっちゃうかもしれない!
nyarla-netさんは比較にcmpを使ってらっしゃいますが,これは日付(date)での整列も可能ですか?

nyarla-netnyarla-net2007/07/01 12:57多分できないかと。
僕の作ったプラグインの場合、指定されたプロパティを単純に比較しているだけなので、そのあたり込み入ったことが出来ないと思います。

まあSweetPotatoさんのか僕のかどちらかをベースにしてくっつけてしまえば良いと思いますが。

トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20070701