File Coverage

blib/lib/DDG/Meta/Block.pm
Criterion Covered Total %
statement 30 30 100.0
branch 5 6 83.3
condition n/a
subroutine 10 10 100.0
pod 1 1 100.0
total 46 47 97.8


line stmt bran cond sub pod time code
1             package DDG::Meta::Block;
2             our $AUTHORITY = 'cpan:DDG';
3             # ABSTRACT: Inject keywords to make a L plugin
4             $DDG::Meta::Block::VERSION = '1018';
5 11     43   86 use strict;
  11         32  
  11         378  
6 11     11   73 use warnings;
  11         28  
  11         407  
7 11     11   80 use Carp;
  11         78  
  11         1805  
8 11     11   4078 use DDG::Block::Blockable::Triggers;
  11         52  
  11         478  
9 11     11   173 use Package::Stash;
  11         35  
  11         2869  
10             require Moo::Role;
11              
12              
13             my %applied;
14              
15             sub apply_keywords {
16 35     35 1 117 my ( $class, $target ) = @_;
17              
18 35 50       142 return if exists $applied{$target};
19 35         100 $applied{$target} = undef;
20              
21             #
22             # triggers
23             #
24              
25 35         69 my $triggers;
26 35         396 my $stash = Package::Stash->new($target);
27              
28              
29 35     33   587 $stash->add_symbol('&triggers_block_type',sub { $triggers->block_type });
  33         379  
30              
31              
32 35     35   351 $stash->add_symbol('&get_triggers',sub { $triggers->get });
  35         7879  
33              
34              
35 35 100   27   378 $stash->add_symbol('&has_triggers',sub { $triggers ? 1 : 0 });
  27         224  
36              
37              
38             $stash->add_symbol('&triggers',sub {
39 47 100   47   1062 $triggers = DDG::Block::Blockable::Triggers->new unless $triggers;
40 47         190 $triggers->add(@_)
41 35         317 });
42              
43             #
44             # apply role
45             #
46              
47 35         417 Moo::Role->apply_role_to_package($target,'DDG::Block::Blockable');
48              
49             }
50              
51             1;
52              
53             __END__