root/trunk/plagger/lib/Plagger/Rule/EntryTag.pm

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

oops, fail to svk add

  • Property svn:keywords set to Id Revision
Line 
1 package Plagger::Rule::EntryTag;
2 use strict;
3 use base qw( Plagger::Rule );
4
5 use Plagger::Operator;
6 use Plagger::Tag;
7
8 sub init {
9     my $self = shift;
10
11     unless (ref($self->{tag})) {
12         $self->{tag} = [ Plagger::Tag->parse($self->{tag}) ];
13     }
14
15     $self->{op}   ||= 'AND';
16
17     unless (Plagger::Operator->is_valid_op($self->{op})) {
18         Plagger->context->error("Unsupported operator $self->{op}");
19     }
20 }
21
22 sub id {
23     my $self = shift;
24     return "tag:" . join '+', @{$self->{tag}};
25 }
26
27 sub as_title {
28     my $self = shift;
29     return "tagged with " . join(" $self->{op} ", map "'$_'", @{$self->{tag}});
30 }
31
32 sub dispatch {
33     my($self, $args) = @_;
34
35     my $entry = $args->{entry}
36         or Plagger->context->error("No entry object in this plugin phase");
37
38     my @bool;
39     for my $want (@{$self->{tag}}) {
40         push @bool, $entry->has_tag($want);
41     }
42
43     Plagger::Operator->call($self->{op}, @bool);
44 }
45
46 1;
Note: See TracBrowser for help on using the browser.