root/lang/perl/plagger/lib/Plagger/Plugin/Expression.pm

Revision 11604, 1.3 kB (checked in by taraburo, 5 months ago)

lang/perl/plagger/lib/Plagger/Plugin/Expression.pm add expression plugin

Line 
1package Plagger::Plugin::Expression;
2use strict;
3use base qw( Plagger::Plugin );
4
5sub init {
6    my $self = shift;
7    $self->SUPER::init(@_);
8
9    $self->rule_hook($self->conf->{rule_hook});
10
11    my $hooks = $self->conf->{hooks} or return;
12    $hooks = [ $hooks ] unless ref $hooks eq 'ARRAY';
13
14    for my $hook (@$hooks) {
15        my $callback = sub {
16            eval $hook->{expression};
17            Plagger->context->error($@) if ($@);
18        };
19        push @{$self->{hooks}}, $hook->{hook}, $callback;
20    }
21}
22
23sub register {
24    my ($self, $context) = @_;
25    $context->register_hook(
26        $self,
27        @{$self->{hooks}},
28    );
29}
30
311;
32
33__END__
34
35=head1 NAME
36
37Plagger::Plugin::Expression - enjoy expression hack
38
39=head1 SYNOPSIS
40
41    - module: Expression
42      config:
43        rule_hook: smartfeed.entry
44        hooks:
45          - hook: smartfeed.init
46            expression: Plagger->context->log(debug => 'smartfeed.init')
47          - hook: smartfeed.entry
48            expression: |
49                my ($self, $context, $args) = @_;
50                $context->log(debug => $args->{entry}->title)
51
52    - module: Expression
53      config:
54        hooks:
55          hook: update.feed.fixup
56          expression: Plagger->context->log(debug => 'update.feed.fixup')
57
58=head1 AUTHOR
59
60taraburo
61
62=head1 SEE ALSO
63
64L<Plagger>
65
66=cut
Note: See TracBrowser for help on using the browser.