Changeset 51
- Timestamp:
- 02/08/06 18:12:51
- Files:
-
- trunk/plagger/lib/Plagger.pm (modified) (2 diffs)
- trunk/plagger/lib/Plagger/Rule.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rule/Always.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rule/Compound.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rule/Expression.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rule/Rating.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plagger/lib/Plagger.pm
r39 r51 18 18 use Plagger::Template; 19 19 use Plagger::Update; 20 21 sub active_hooks { 22 my $self = shift; 23 my @hooks= keys %{$self->{hooks}}; 24 wantarray ? @hooks : \@hooks; 25 } 20 26 21 27 sub context { undef } … … 85 91 for my $action (@{ $self->{hooks}->{$hook} }) { 86 92 my $plugin = $action->{plugin}; 87 if ( $plugin->rule->dispatch($ args) ) {93 if ( $plugin->rule->dispatch($hook, $args) ) { 88 94 $action->{callback}->($plugin, $self, $args); 89 95 } trunk/plagger/lib/Plagger/Rule.pm
r30 r51 19 19 } 20 20 21 sub can_run { 22 my($self, $hook) = @_; 23 $self->{__hooks} ||= { map { $_ => 1 } @{ $self->hooks } }; 24 25 my @phase = split /\./, $hook; 26 my @try = reverse map join(".", @phase[0..$_]), 0..$#phase; 27 28 for my $try (@try) { 29 return 1 if $self->{__hooks}->{$try} || $self->{__hooks}->{"$try.*"}; 30 } 31 32 return 0; 33 } 34 21 35 sub init { } 22 36 trunk/plagger/lib/Plagger/Rule/Always.pm
r7 r51 2 2 use base qw( Plagger::Rule ); 3 3 4 sub hooks { Plagger->context->active_hooks } 4 5 sub dispatch { 1 } 5 6 trunk/plagger/lib/Plagger/Rule/Compound.pm
r47 r51 25 25 26 26 sub dispatch { 27 my($self, $ args) = @_;27 my($self, $hook, $args) = @_; 28 28 29 29 my @bool; 30 30 for my $rule (@{ $self->{rules} }) { 31 next unless $rule->can_run($hook); 31 32 push @bool, ($rule->dispatch($args) ? 1 : 0); 32 33 } trunk/plagger/lib/Plagger/Rule/Expression.pm
r36 r51 2 2 use strict; 3 3 use base qw( Plagger::Rule ); 4 5 sub hooks { 6 my $self = shift; 7 $self->{hooks} || Plagger->context->active_hooks; 8 } 4 9 5 10 sub dispatch { trunk/plagger/lib/Plagger/Rule/Rating.pm
r36 r51 23 23 } 24 24 25 sub hooks { [ 'publish.add_feed' ] } 26 25 27 sub dispatch { 26 28 my($self, $args) = @_;
