File Coverage

blib/lib/RPerl/Operation/Expression/Operator/Named/Split.pm
Criterion Covered Total %
statement 18 73 24.6
branch 0 16 0.0
condition n/a
subroutine 6 9 66.6
pod n/a
total 24 98 24.4


line stmt bran cond sub pod time code
1             # [[[ DOCUMENTATION ]]]
2             # http://perldoc.perl.org/functions/split.html
3             # SUPPORTED: split /PATTERN/,EXPR,LIMIT
4             # SUPPORTED: split /PATTERN/,EXPR
5             # NOT SUPPORTED: split /PATTERN/
6             # NOT SUPPORTED: split
7              
8             # [[[ HEADER ]]]
9             package RPerl::Operation::Expression::Operator::Named::Split;
10 4     4   23 use strict;
  4         9  
  4         95  
11 4     4   18 use warnings;
  4         8  
  4         79  
12 4     4   20 use RPerl::AfterSubclass;
  4         8  
  4         576  
13             our $VERSION = 0.002_000;
14              
15             # [[[ OO INHERITANCE ]]]
16 4     4   25 use parent qw(RPerl::Operation::Expression::Operator::Named);
  4         22  
  4         53  
17 4     4   224 use RPerl::Operation::Expression::Operator::Named;
  4         10  
  4         122  
18              
19             # [[[ CRITICS ]]]
20             ## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls) # USER DEFAULT 1: allow numeric values & print operator
21             ## no critic qw(RequireInterpolationOfMetachars) # USER DEFAULT 2: allow single-quoted control characters & sigils
22             ## no critic qw(ProhibitConstantPragma ProhibitMagicNumbers) # USER DEFAULT 3: allow constants
23              
24             # [[[ CONSTANTS ]]]
25 4     4   24 use constant NAME => my string $TYPED_NAME = 'split';
  4         7  
  4         2716  
26              
27             # NEED UPDATE
28             #use constant ARGUMENTS_MIN => my integer $TYPED_ARGUMENTS_MIN = 2;
29             #use constant ARGUMENTS_MAX => my integer $TYPED_ARGUMENTS_MAX = 3;
30              
31             # [[[ OO PROPERTIES ]]]
32             our hashref $properties = {};
33              
34             # [[[ SUBROUTINES & OO METHODS ]]]
35              
36             sub ast_to_rperl__generate {
37 0     0     { my string_hashref::method $RETURN_TYPE };
  0            
38 0           ( my object $self, my object $operator_named, my string_hashref $modes)
39             = @ARG;
40 0           my string_hashref $rperl_source_group = { PMC => q{} };
41              
42             # RPerl::diag( 'in Operator::Named::Split->ast_to_rperl__generate(), received $self = ' . "\n" . RPerl::Parser::rperl_ast__dump($self) . "\n" );
43             # RPerl::diag( 'in Operator::Named::Split->ast_to_rperl__generate(), received $operator_named = ' . "\n" . RPerl::Parser::rperl_ast__dump($operator_named) . "\n" );
44              
45 0           my string $operator_named_class = ref $operator_named;
46 0 0         if ( $operator_named_class eq 'Operation_90' ) { # Operation -> OP01_NAMED_SCOLON
    0          
    0          
    0          
47             die RPerl::Parser::rperl_rule__replace(
48             'ERROR ECOGEASRP18, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL: Named operator '
49 0           . $operator_named->{children}->[0]
50             . ' requires multiple arguments, dying' )
51             . "\n";
52             }
53             elsif ( $operator_named_class eq 'Operator_94' ) { # Operator -> OP01_NAMED SubExpression
54             die RPerl::Parser::rperl_rule__replace(
55             'ERROR ECOGEASRP18, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL: Named operator '
56 0           . $operator_named->{children}->[0]
57             . ' requires multiple arguments, dying' )
58             . "\n";
59             }
60             elsif ( $operator_named_class eq 'Operator_95' ) { # Operator -> LPAREN OP01_NAMED ListElement OP21_LIST_COMMA ListElements ')'
61 0           my string $left_paren = $operator_named->{children}->[0];
62 0           my string $operator_name = $operator_named->{children}->[1];
63 0           my object $argument0 = $operator_named->{children}->[2];
64 0           my string $list_comma = $operator_named->{children}->[3];
65 0           my object $arguments = $operator_named->{children}->[4];
66 0           my string $right_paren = $operator_named->{children}->[5];
67              
68 0           my integer $argument_count = $arguments->length() + 1;
69 0 0         if ( $argument_count < ARGUMENTS_MIN() ) {
70 0           die
71             'ERROR ECOGEASRP02, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:'
72             . "\n"
73             . 'Argument count '
74             . $argument_count
75             . ' falls below minimum argument limit '
76             . ARGUMENTS_MIN()
77             . ' for operation ' . q{'}
78             . NAME() . q{'}
79             . ', dying' . "\n";
80             }
81 0 0         if ( $argument_count > ARGUMENTS_MAX() ) {
82 0           die
83             'ERROR ECOGEASRP03, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:'
84             . "\n"
85             . 'Argument count '
86             . $argument_count
87             . ' exceeds maximum argument limit '
88             . ARGUMENTS_MAX()
89             . ' for operation ' . q{'}
90             . NAME() . q{'}
91             . ', dying' . "\n";
92             }
93              
94 0           $rperl_source_group->{PMC} .= $left_paren . q{ } . $operator_name . q{ };
95 0           my string_hashref $rperl_source_subgroup = $argument0->ast_to_rperl__generate( $modes, $self );
96 0           RPerl::Generator::source_group_append( $rperl_source_group, $rperl_source_subgroup );
97 0           $rperl_source_group->{PMC} .= $list_comma . q{ };
98 0           $rperl_source_subgroup = $arguments->ast_to_rperl__generate( $modes, $self );
99 0           RPerl::Generator::source_group_append( $rperl_source_group, $rperl_source_subgroup );
100 0           $rperl_source_group->{PMC} .= q{ } . $right_paren;
101             }
102             elsif ( $operator_named_class eq 'OperatorVoid_134' ) { # OperatorVoid -> OP01_NAMED ListElement OP21_LIST_COMMA ListElements ';'
103 0           my string $operator_name = $operator_named->{children}->[0];
104 0           my object $argument0 = $operator_named->{children}->[1];
105 0           my string $list_comma = $operator_named->{children}->[2];
106 0           my object $arguments = $operator_named->{children}->[3];
107 0           my string $semicolon = $operator_named->{children}->[4];
108              
109 0           my integer $argument_count = $arguments->length() + 1;
110 0 0         if ( $argument_count < ARGUMENTS_MIN() ) {
111 0           die
112             'ERROR ECOGEASRP02, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:'
113             . "\n"
114             . 'Argument count '
115             . $argument_count
116             . ' falls below minimum argument limit '
117             . ARGUMENTS_MIN()
118             . ' for operation ' . q{'}
119             . NAME() . q{'}
120             . ', dying' . "\n";
121             }
122 0 0         if ( $argument_count > ARGUMENTS_MAX() ) {
123 0           die
124             'ERROR ECOGEASRP03, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:'
125             . "\n"
126             . 'Argument count '
127             . $argument_count
128             . ' exceeds maximum argument limit '
129             . ARGUMENTS_MAX()
130             . ' for operation ' . q{'}
131             . NAME() . q{'}
132             . ', dying' . "\n";
133             }
134              
135 0           $rperl_source_group->{PMC} .= $operator_name . q{ };
136 0           my string_hashref $rperl_source_subgroup = $argument0->ast_to_rperl__generate( $modes, $self );
137 0           RPerl::Generator::source_group_append( $rperl_source_group, $rperl_source_subgroup );
138 0           $rperl_source_group->{PMC} .= $list_comma . q{ };
139 0           $rperl_source_subgroup = $arguments->ast_to_rperl__generate( $modes, $self );
140 0           RPerl::Generator::source_group_append( $rperl_source_group, $rperl_source_subgroup );
141 0           $rperl_source_group->{PMC} .= $semicolon . "\n";
142             }
143             else {
144 0           die RPerl::Parser::rperl_rule__replace(
145             'ERROR ECOGEASRP00, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL: Grammar rule '
146             . ($operator_named_class)
147             . ' found where Operation_90, Operator_94, Operator_95, or OperatorVoid_134 expected, dying'
148             ) . "\n";
149             }
150 0           return $rperl_source_group;
151             }
152              
153             sub ast_to_cpp__generate__CPPOPS_PERLTYPES {
154 0     0     { my string_hashref::method $RETURN_TYPE };
  0            
155 0           ( my object $self, my string_hashref $modes) = @ARG;
156 0           my string_hashref $cpp_source_group
157             = { CPP =>
158             q{// <<< RP::O::E::O::N::Sp __DUMMY_SOURCE_CODE CPPOPS_PERLTYPES >>>}
159             . "\n" };
160              
161             #...
162 0           return $cpp_source_group;
163             }
164              
165             sub ast_to_cpp__generate__CPPOPS_CPPTYPES {
166 0     0     { my string_hashref::method $RETURN_TYPE };
  0            
167 0           ( my object $self, my string_hashref $modes) = @ARG;
168 0           my string_hashref $cpp_source_group
169             = { CPP =>
170             q{// <<< RP::O::E::O::N::Sp __DUMMY_SOURCE_CODE CPPOPS_CPPTYPES >>>}
171             . "\n" };
172              
173             #...
174 0           return $cpp_source_group;
175             }
176              
177             1; # end of class