Changeset 78
- Timestamp:
- 02/17/06 16:36:05
- Files:
-
- trunk/plagger/lib/Plagger.pm (modified) (2 diffs)
- trunk/plagger/lib/Plagger/Plugin.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rule.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rule/Always.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rule/DateTimeCron.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rule/Expression.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rule/FeedAttr.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rule/FeedType.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rule/Rating.pm (modified) (1 diff)
- trunk/plagger/lib/Plagger/Rules.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plagger/lib/Plagger.pm
r77 r78 112 112 my($self, $plugin, @hooks) = @_; 113 113 while (my($hook, $callback) = splice @hooks, 0, 2) { 114 # set default rule_hook $hook to $plugin 115 $plugin->rule_hook($hook) unless $plugin->rule_hook; 116 114 117 push @{ $self->{hooks}->{$hook} }, +{ 115 118 callback => $callback, … … 123 126 for my $action (@{ $self->{hooks}->{$hook} }) { 124 127 my $plugin = $action->{plugin}; 125 if ( $plugin->rule->dispatch($ hook, $args) ) {128 if ( $plugin->rule->dispatch($plugin, $hook, $args) ) { 126 129 $action->{callback}->($plugin, $self, $args); 127 130 } trunk/plagger/lib/Plagger/Plugin.pm
r52 r78 31 31 sub rule { $_[0]->{rule} } 32 32 33 sub rule_hook { '' } 34 35 sub dispatch_rule_on { 36 my($self, $hook) = @_; 37 $self->rule_hook eq $hook; 38 } 39 33 40 1; trunk/plagger/lib/Plagger/Rule.pm
r51 r78 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 35 21 sub init { } 36 22 trunk/plagger/lib/Plagger/Rule/Always.pm
r51 r78 2 2 use base qw( Plagger::Rule ); 3 3 4 sub hooks { Plagger->context->active_hooks }5 4 sub dispatch { 1 } 6 5 trunk/plagger/lib/Plagger/Rule/DateTimeCron.pm
r72 r78 19 19 } 20 20 21 sub hooks { Plagger->context->active_hooks }22 23 21 sub dispatch { 24 22 my($self, $args) = @_; trunk/plagger/lib/Plagger/Rule/Expression.pm
r51 r78 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 }9 4 10 5 sub dispatch { trunk/plagger/lib/Plagger/Rule/FeedAttr.pm
r74 r78 40 40 } 41 41 } 42 43 sub hooks { [ 'update.entry.fixup', 'update.feed.fixup', 'publish.entry.fixup', 'publish.add_feed' ] }44 42 45 43 sub dispatch { trunk/plagger/lib/Plagger/Rule/FeedType.pm
r55 r78 21 21 } 22 22 23 sub hooks { [ 'publish.add_feed' ] }24 25 23 sub dispatch { 26 24 my($self, $args) = @_; trunk/plagger/lib/Plagger/Rule/Rating.pm
r51 r78 23 23 } 24 24 25 sub hooks { [ 'publish.add_feed' ] }26 27 25 sub dispatch { 28 26 my($self, $args) = @_; trunk/plagger/lib/Plagger/Rules.pm
r54 r78 15 15 16 16 sub dispatch { 17 my($self, $hook, $args) = @_; 17 my($self, $plugin, $hook, $args) = @_; 18 19 return 1 unless $plugin->dispatch_rule_on($hook); 18 20 19 21 my @bool; 20 22 for my $rule (@{ $self->{rules} }) { 21 next unless $rule->can_run($hook);22 23 push @bool, ($rule->dispatch($args) ? 1 : 0); 23 24 }
