File Coverage

blib/lib/MDOM/Assignment.pm
Criterion Covered Total %
statement 39 39 100.0
branch 18 20 90.0
condition n/a
subroutine 8 8 100.0
pod 0 3 0.0
total 65 70 92.8


line stmt bran cond sub pod time code
1             package MDOM::Assignment;
2              
3 15     15   92 use strict;
  15         40  
  15         543  
4 15     15   80 use warnings;
  15         32  
  15         465  
5              
6             #use Smart::Comments;
7 15     15   82 use base 'MDOM::Node';
  15         30  
  15         96  
8 15     15   96 use MDOM::Util qw( trim_tokens );
  15         38  
  15         10860  
9              
10             sub lhs ($) {
11 6     6 0 36 my ($self) = @_;
12 6 100       22 $self->_parse if !defined $self->{op};
13 6         10 my $tokens = $self->{lhs};
14 6 100       26 wantarray ? @$tokens : $tokens;
15             }
16              
17             sub rhs ($) {
18 6     6 0 26 my ($self) = @_;
19 6 50       20 $self->_parse if !defined $self->{op};
20 6         10 my $tokens = $self->{rhs};
21 6 100       34 wantarray ? @$tokens : $tokens;
22             }
23              
24             sub op {
25 3     3 0 7 my ($self) = @_;
26 3 50       9 $self->_parse if !defined $self->{op};
27 3         15 $self->{op};
28             }
29              
30             sub _parse ($) {
31 3     3   4 my ($self) = @_;
32 3         21 my @elems = $self->elements;
33             ### Assignment elems: @elems
34 3         7 my (@lhs, @rhs, $op);
35 3         7 for my $elem (@elems) {
36 28 100       74 if (!$op) {
    100          
37 11 100       54 if ($elem->class eq 'MDOM::Token::Separator') {
38 3         6 $op = $elem;
39             } else {
40 8         16 push @lhs, $elem;
41             }
42             } elsif ($elem->class eq 'MDOM::Token::Comment') {
43 1         3 last;
44             } else {
45 16         26 push @rhs, $elem;
46             }
47             }
48 3         20 trim_tokens(\@lhs);
49 3 100       10 pop @rhs if $rhs[-1] eq "\n";
50 3 100       8 shift @rhs if $rhs[0]->class eq 'MDOM::Token::Whitespace';
51 3         6 $self->{lhs} = \@lhs;
52 3         7 $self->{rhs} = \@rhs;
53 3         7 $self->{op} = $op;
54             }
55              
56             1;