File Coverage

blib/lib/Rose/HTML/Form/Field/OnOff.pm
Criterion Covered Total %
statement 33 35 94.2
branch 12 14 85.7
condition n/a
subroutine 13 13 100.0
pod 3 9 33.3
total 61 71 85.9


line stmt bran cond sub pod time code
1             package Rose::HTML::Form::Field::OnOff;
2              
3 16     16   134 use strict;
  16         34  
  16         524  
4              
5 16     16   92 use base 'Rose::HTML::Form::Field::Input';
  16         39  
  16         4589  
6              
7 16     16   141 use Rose::HTML::Form::Constants qw(FF_SEPARATOR);
  16         34  
  16         1043  
8              
9             our $VERSION = '0.606';
10              
11             use Rose::Object::MakeMethods::Generic
12             (
13 16         122 boolean => 'hidden',
14 16     16   114 );
  16         41  
15              
16             __PACKAGE__->add_required_html_attrs(
17             {
18             value => 'on',
19             });
20              
21 448     448 1 2428 sub value { shift->html_attr('value', @_) }
22              
23 2 100   2 0 12 sub value_label { $_[0]->is_on ? $_[0]->label : undef }
24              
25 230 100   230 1 567 sub internal_value { $_[0]->is_on ? $_[0]->html_attr('value') : undef }
26 54 50   54 1 160 sub output_value { $_[0]->is_on ? $_[0]->html_attr('value') : undef }
27              
28 5     5 0 23 sub hide { shift->hidden(1) }
29 5     5 0 24 sub show { shift->hidden(0) }
30              
31             sub group_context_name
32             {
33 1361     1361 0 2120 my($self) = shift;
34 1361 100       2956 my $parent_group = $self->parent_group or return;
35 1058 100       2472 my $name = $parent_group->fq_name or return;
36 1043         2360 return $name;
37             }
38              
39             sub fq_name
40             {
41 1253     1253 0 2089 my($self) = shift;
42              
43 1253         2406 my $name = $self->group_context_name;
44 1253 100       2819 $name = $self->local_name unless(defined $name);
45              
46 1253         3047 return join(FF_SEPARATOR, grep { defined } $self->form_context_name,
  3759         8669  
47             $self->field_context_name,
48             $name);
49             }
50              
51             my $sep = FF_SEPARATOR;
52              
53             sub fq_moniker
54             {
55 108     108 0 195 my($self) = shift;
56              
57 108         236 my $name = $self->group_context_name;
58              
59 108 50       238 if(defined $name)
60             {
61 0         0 my $moniker = $self->local_moniker;
62 0         0 $name =~ s/(?:^|\Q$sep\E)[^$sep]+$/$moniker/o;
63             }
64 108         270 else { $name = $self->local_moniker }
65              
66 108         667 return join(FF_SEPARATOR, grep { defined } $self->form_context_name,
  324         853  
67             $self->field_context_name,
68             $name);
69             }
70              
71             1;