root/branches/feature-server/plagger/lib/Plagger/Update.pm

Revision 444 (checked in by miyagawa, 3 years ago)

Add Filter::Rule module to strip entries and feeds using Fresh rule for easy deduping

  • Property svn:keywords set to Id Revision
Line 
1 package Plagger::Update;
2 use strict;
3
4 sub new {
5     my $class = shift;
6     bless { feeds => [], by_tags => {} }, $class;
7 }
8
9 sub add {
10     my($self, $feed) = @_;
11     push @{ $self->{feeds} }, $feed;
12     for my $tag ( @{$feed->tags} ) {
13         push @{ $self->{by_tags}->{$tag} }, $feed;
14     }
15 }
16
17 sub delete_feed {
18     my($self, $feed) = @_;
19     my @feeds = grep { $_ ne $feed } $self->feeds;
20     $self->{feeds} = \@feeds;
21
22     for my $tag ( @{$feed->tags} ) {
23         my @feeds = grep { $_ ne $feed } @{ $self->{by_tags}->{$tag} };
24         $self->{by_tags}->{$tag} = \@feeds;
25     }
26 }
27
28 sub feeds {
29     my $self = shift;
30     wantarray ? @{ $self->{feeds} } : $self->{feeds};
31 }
32
33 sub feeds_by_tag {
34     my($self, $tag) = @_;
35     my @feeds = @{ $self->{by_tags}->{$tag} || [] };
36     wantarray ? @feeds : \@feeds;
37 }
38
39 sub tags {
40     my $self = shift;
41     keys %{ $self->{by_tags} };
42 }
43
44 1;
Note: See TracBrowser for help on using the browser.