Add built local::lib
[catagits/Gitalist.git] / local-lib5 / lib / perl5 / PPI / Statement / Scheduled.pm
CommitLineData
3fea05b9 1package PPI::Statement::Scheduled;
2
3=pod
4
5=head1 NAME
6
7PPI::Statement::Scheduled - A scheduled code block
8
9=head1 INHERITANCE
10
11 PPI::Statement::Scheduled
12 isa PPI::Statement::Sub
13 isa PPI::Statement
14 isa PPI::Node
15 isa PPI::Element
16
17=head1 DESCRIPTION
18
19A scheduled code block is one that is intended to be run at a specific
20time during the loading process.
21
22There are five types of scheduled block:
23
24 BEGIN {
25 # Executes as soon as this block is fully defined
26 ...
27 }
28
29 CHECK {
30 # Executes after overall compile-phase in reverse order
31 ...
32 }
33
34 UNITCHECK {
35 # Executes after compile-phase of individual module in reverse order
36 ...
37 }
38
39 INIT {
40 # Executes just before run-time
41 ...
42 }
43
44 END {
45 # Executes as late as possible in reverse order
46 ...
47 }
48
49Technically these scheduled blocks are actually subroutines, and in fact
50may have 'sub' in front of them.
51
52=head1 METHODS
53
54=cut
55
56use strict;
57use PPI::Statement::Sub ();
58
59use vars qw{$VERSION @ISA};
60BEGIN {
61 $VERSION = '1.206';
62 @ISA = 'PPI::Statement::Sub';
63}
64
65sub __LEXER__normal { '' }
66
67sub _complete {
68 my $child = $_[0]->schild(-1);
69 return !! (
70 defined $child
71 and
72 $child->isa('PPI::Structure::Block')
73 and
74 $child->complete
75 );
76}
77
78=pod
79
80=head2 type
81
82The C<type> method returns the type of scheduled block, which should always be
83one of C<'BEGIN'>, C<'CHECK'>, C<'UNITCHECK'>, C<'INIT'> or C<'END'>.
84
85=cut
86
87sub type {
88 my $self = shift;
89 my @children = $self->schildren or return undef;
90 $children[0]->content eq 'sub'
91 ? $children[1]->content
92 : $children[0]->content;
93}
94
95# This is actually the same as Sub->name
96sub name {
97 shift->type(@_);
98}
99
1001;
101
102=pod
103
104=head1 TO DO
105
106- Write unit tests for this package
107
108=head1 SUPPORT
109
110See the L<support section|PPI/SUPPORT> in the main module.
111
112=head1 AUTHOR
113
114Adam Kennedy E<lt>adamk@cpan.orgE<gt>
115
116=head1 COPYRIGHT
117
118Copyright 2001 - 2009 Adam Kennedy.
119
120This program is free software; you can redistribute
121it and/or modify it under the same terms as Perl itself.
122
123The full text of the license can be found in the
124LICENSE file included with this module.
125
126=cut