1Tangerine::Hook(3)    User Contributed Perl Documentation   Tangerine::Hook(3)
2
3
4

NAME

6       Tangerine::Hook - A simple hook class
7

SYNOPSIS

9           package MyHook;
10           use parent 'Tangerine::Hook';
11           use Tangerine::HookData;
12           use Tangerine::Occurence;
13
14           sub run {
15               my ($self, $s) = @_;
16               if ($s->[0] eq 'use' && $self->type eq 'compile' &&
17                   $s->[1] && $s->[1] eq 'MyModule') {
18                   return Tangerine::HookData->new(
19                       modules => { MyModule => Tangerine::Occurence->new },
20                   )
21               }
22               return
23           }
24

DESCRIPTION

26       Hooks are the workhorses of Tangerine, examining the actual code and
27       returning Tangerine::HookData where applicable.
28
29       Every hook has a type, which can be one of 'package', 'compile' or
30       'runtime', set by the caller and determining what she is interested in.
31
32       Every hook should implement the "run" method which is passed an array
33       reference containing the significant children (see PPI::Statement) of
34       the currently parsed Perl statement.
35
36       The caller expects a Tangerine::HookData instance defining what
37       "modules" of the requested "type" we found, what "hooks" the caller
38       should register or what "children" shall be examined next.  Either or
39       all these may be returned at once.
40

METHODS

42       "type"
43           Returns or sets the hook type.  May be one of "package", "compile"
44           or "runtime".
45
46       "run"
47           This is called by Tangerine with an array reference containing the
48           significant children of the currently parsed Perl statement.
49           Returns a Tangerine::HookData instance.
50
51           Every hook needs to implement this method.
52

SEE ALSO

54       "Tangerine", "PPI::Statement", "Tangerine::HookData"
55

AUTHOR

57       Petr Šabata <contyk@redhat.com>
58
60       Copyright (c) 2014-2016 Petr Šabata
61
62       See LICENSE for licensing details.
63
64
65
66perl v5.36.0                      2023-01-20                Tangerine::Hook(3)
Impressum