File Coverage

gen/attr-PerlBean_Attribute_Boolean.pl
Criterion Covered Total %
statement 6 6 100.0
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 8 8 100.0


line stmt bran cond sub pod time code
1 1     1   5 use strict;
  1         2  
  1         255  
2              
3             push(@::bean_desc, {
4             bean_opt => {
5             abstract => 'BOOLEAN bean attribute information',
6             package => 'PerlBean::Attribute::Boolean',
7             use_perl_version => 5.005,
8             base => [qw(PerlBean::Attribute)],
9             description => <
10             C contains BOOLEAN bean attribute information. It is a subclass of C. The code generation and documentation methods are implemented.
11             EOF
12             short_description => 'contains BOOLEAN bean attribute information',
13             synopsis => &get_syn(),
14             },
15             attr_opt => [
16             ],
17             meth_opt => [
18             {
19             method_name => 'create_method_is',
20             documented => 0,
21             body => <<'THE_EOF',
22             my $self = shift;
23              
24             my $an = $self->get_method_factory_name();
25             my $op = &{$MOF}('is');
26             my $mb = $self->get_method_base();
27             my $pkg_us = $self->get_package_us();
28             my $desc = defined( $self->get_short_description() ) ? $self->get_short_description() : 'not described option';
29              
30             return( PerlBean::Method->new( {
31             method_name => "$op$mb",
32             volatile => 1,
33             documented => $self->is_documented(),
34             description => <
35             Returns whether ${desc} or not.
36             EOF
37             body => <
38             ${IND}my \$self${AO}=${AO}shift;
39              
40             ${IND}if${BCP}(${ACS}\$self->{$pkg_us}{$an}${ACS})${PBOC[1]}{
41             ${IND}${IND}return${BFP}(1);
42             ${IND}}${PBCC[1]}else${PBOC[1]}{
43             ${IND}${IND}return${BFP}(0);
44             ${IND}}
45             EOF
46             } ) );
47             THE_EOF
48             },
49             {
50             method_name => 'create_method_set',
51             documented => 0,
52             body => <<'THE_EOF',
53             my $self = shift;
54              
55             my $an = $self->get_method_factory_name();
56             my $op = &{$MOF}('set');
57             my $mb = $self->get_method_base();
58             my $pkg_us = $self->get_package_us();
59             my $desc = defined( $self->get_short_description() ) ?
60             $self->get_short_description() : 'not described option';
61             my $def = defined( $self->get_default_value() ) ?
62             ' Default value at initialization is C<' .
63             $self->_esc_aq( $self->get_default_value() ) . '>.' :
64             '';
65             my $exc = ' On error an exception C<' . $self->get_exception_class() .
66             '> is thrown.';
67             my $attr_overl = $self->_get_overloaded_attribute();
68             my $overl = defined($attr_overl) ?
69             " B Methods B> are overloaded from package C<" .
70             $attr_overl->get_perl_bean()->get_package() .'>.' :
71             '';
72              
73             return( PerlBean::Method->new( {
74             method_name => "$op$mb",
75             parameter_description => 'VALUE',
76             volatile => 1,
77             documented => $self->is_documented(),
78             description => <
79             State that $desc. C is the value.$def$exc$overl
80             EOF
81             body => <
82             ${IND}my \$self${AO}=${AO}shift;
83              
84             ${IND}if${BCP}(shift)${PBOC[1]}{
85             ${IND}${IND}\$self->{$pkg_us}{$an}${AO}=${AO}1;
86             ${IND}}${PBCC[1]}else${PBOC[1]}{
87             ${IND}${IND}\$self->{$pkg_us}{$an}${AO}=${AO}0;
88             ${IND}}
89             EOF
90             } ) );
91             THE_EOF
92             },
93             {
94             method_name => 'create_methods',
95             body => <<'EOF',
96             my $self = shift;
97              
98             return(
99             $self->create_method_is(),
100             $self->create_method_set()
101             );
102             EOF
103             },
104             {
105             method_name => 'write_allow_isa',
106             documented => 0,
107             body => " return('');\n",
108             },
109             {
110             method_name => 'write_allow_ref',
111             documented => 0,
112             body => " return('');\n",
113             },
114             {
115             method_name => 'write_allow_rx',
116             documented => 0,
117             body => " return('');\n",
118             },
119             {
120             method_name => 'write_allow_value',
121             documented => 0,
122             body => " return('');\n",
123             },
124             {
125             method_name => 'write_default_value',
126             body => <<'THE_EOF',
127             my $self = shift;
128              
129             defined( $self->get_default_value() ) || return('');
130              
131             my $an = $self->_esc_aq( $self->get_method_factory_name() );
132             my $dv = $self->get_default_value() ? 1 : 0;
133              
134             return( "${IND}$an${AO}=>${AO}$dv,\n" );
135             THE_EOF
136             },
137             {
138             method_name => 'write_constructor_option_code',
139             body => <<'THE_EOF',
140             my $self = shift;
141              
142             my $an = $self->get_method_factory_name();
143             my $op = &{$MOF}('set');
144             my $mb = $self->get_method_base();
145             my $ec = $self->get_exception_class();
146             my $pkg = $self->get_package();
147              
148              
149             # Comment
150             my $code = "${IND}# $an, " . $self->type();
151             $code .= $self->is_mandatory() ? ', mandatory' : '';
152             $code .= defined( $self->get_default_value() ) ? ', with default value' : '';
153             $code .= "\n";
154              
155             # is_mandatory check
156             if ($self->is_mandatory()) {
157             $code .= <
158             ${IND}exists${BFP}(${ACS}\$opt->{$an}${ACS})${AO}||${AO}throw $ec${BFP}("ERROR: ${pkg}::_initialize, option '$an' is mandatory.");
159             EOF
160             }
161              
162             if ( $self->is_mandatory() ) {
163             $code .= <
164             ${IND}\$self->$op$mb${BFP}(${ACS}\$opt->{$an}${ACS});
165             EOF
166             }
167             else {
168             if ( defined( $self->get_default_value () ) ) {
169             $code .= <
170             ${IND}\$self->$op$mb${BFP}(${ACS}exists${BFP}(${ACS}\$opt->{$an}${ACS})${AO}?${AO}\$opt->{$an}${AO}:${AO}\$DEFAULT_VALUE{$an}${ACS});
171             EOF
172             }
173             else {
174             $code .= <
175             ${IND}exists${BFP}(${ACS}\$opt->{$an}${ACS})${AO}&&${AO}\$self->$op$mb${BFP}(${ACS}\$opt->{$an}${ACS});
176             EOF
177             }
178             }
179              
180             # Empty line
181             $code .= "\n";
182              
183             return($code);
184             THE_EOF
185             },
186             {
187             method_name => 'write_constructor_option_doc',
188             body => <<'THE_EOF',
189             my $self = shift;
190              
191             # Do nothing if not documented
192             $self->is_documented() || return('');
193              
194             my $an = $self->get_method_factory_name();
195             my $op = &{$MOF}('set');
196             my $mb = $self->get_method_base();
197             my $mand = $self->is_mandatory() ? ' Mandatory option.' : '';
198             my $def = '';
199             if ( defined( $self->get_default_value() ) ) {
200             $def = ' Defaults to B<' . $self->_esc_aq( $self->get_default_value() ) . '>.';
201             }
202              
203             return(<
204              
205             \=item B>
206              
207             Passed to L<$op$mb${BFP}()>.${mand}${def}
208             EOF
209             THE_EOF
210             },
211             {
212             method_name => 'mk_doc_clauses',
213             body => " return('');\n",
214             },
215             ],
216             sym_opt => [
217             ],
218             use_opt => [
219             {
220             dependency_name => 'PerlBean::Style',
221             import_list => [ 'qw(:codegen)' ],
222             },
223             ],
224             } );
225              
226             sub get_syn {
227 1     1   8 use IO::File;
  1         3  
  1         227  
228             my $fh = IO::File->new('< syn-PerlBean_Attribute_Boolean.pl');
229             $fh = IO::File->new('< gen/syn-PerlBean_Attribute_Boolean.pl') if (! defined($fh));
230             my $syn = '';
231             my $prev_line = $fh->getline ();
232             while (my $line = $fh->getline ()) {
233             $syn .= ' ' . $prev_line;
234             $prev_line = $line;
235             }
236             return($syn);
237             }
238              
239             1;