File Coverage

blib/lib/Perlito/Macro.pm
Criterion Covered Total %
statement 208 220 94.5
branch 23 26 88.4
condition 34 54 62.9
subroutine 15 17 88.2
pod n/a
total 280 317 88.3


line stmt bran cond sub pod time code
1             # Do not edit this file - Generated by Perlito 7.0
2 31     31   433 use v5;
  31         117  
  31         1536  
3 31     31   192 use utf8;
  31         72  
  31         257  
4 31     31   1011 use strict;
  31         65  
  31         6955  
5 31     31   191 use warnings;
  31         67  
  31         3437  
6 31     31   212 no warnings ('redefine', 'once', 'void', 'uninitialized', 'misc', 'recursion');
  31         76  
  31         1617  
7 31     31   183 use Perlito::Perl5::Runtime;
  31         80  
  31         889  
8 31     31   185 use Perlito::Perl5::Prelude;
  31         85  
  31         156252  
9             our $MATCH = Perlito::Match->new();
10             {
11             package GLOBAL;
12             sub new { shift; bless { @_ }, "GLOBAL" }
13              
14             # use v6
15             ;
16             {
17             package Lit::Array;
18 26     26   51 sub new { shift; bless { @_ }, "Lit::Array" }
  26         171  
19 0     0   0 sub array1 { $_[0]->{array1} };
20             sub expand_interpolation {
21 26     26   48 my $self = $_[0];
22 26         43 ((my $needs_interpolation) = 0);
23 26         65 (my $List_items = bless [], 'ARRAY');
24 26         36 for my $item ( @{$self->{array1}} ) {
  26         104  
25 26 100 66     178 if ((Main::isa($item, 'Apply') && ((($item->code() eq 'circumfix:<( )>') || ($item->code() eq 'list:<,>'))))) {
      66        
26 7         11 for my $arg ( @{(($item->arguments()))} ) {
  7         26  
27 15         25 push( @{$List_items}, $arg )
  15         48  
28             }
29             }
30             else {
31 19         29 push( @{$List_items}, $item )
  19         61  
32             }
33             };
34 26         45 for my $item ( @{$List_items} ) {
  26         51  
35 34 100 66     98 if (((Main::isa($item, 'Var') && ($item->sigil() eq chr(64))) || (Main::isa($item, 'Apply') && ((($item->code() eq 'prefix:<' . chr(64) . '>') || ($item->code() eq 'infix:<..>')))))) {
      100        
      66        
      66        
36 5         16 ($needs_interpolation = 1)
37             }
38             };
39 26 100 100     96 if (($needs_interpolation && (scalar( @{$List_items} ) == 1))) {
  5         30  
40 4         17 return scalar ($List_items->[0])
41             };
42 22         55 (my $List_s = bless [], 'ARRAY');
43 22         32 for my $item ( @{$List_items} ) {
  22         39  
44 30 100 66     120 if (((Main::isa($item, 'Var') && ($item->sigil() eq chr(64))) || (Main::isa($item, 'Apply') && ((($item->code() eq 'prefix:<' . chr(64) . '>') || ($item->code() eq 'infix:<..>')))))) {
      33        
      66        
      66        
45 1         2 push( @{$List_s}, Apply->new(('arguments' => do {
  1         3  
46 1         4 (my $List_a = bless [], 'ARRAY');
47 1         2 (my $List_v = bless [], 'ARRAY');
48 1         2 push( @{$List_a}, Var->new(('name' => 'v'), ('namespace' => ''), ('sigil' => chr(64)), ('twigil' => '')) );
  1         20  
49 1         3 push( @{$List_a}, $item );
  1         3  
50 1         7 $List_a
51             }), ('code' => 'infix:<' . chr(61) . '>'), ('namespace' => '')) );
52 1         6 push( @{$List_s}, For->new(('body' => Lit::Block->new(('sig' => Var->new(('name' => 'x'), ('namespace' => ''), ('sigil' => chr(36)), ('twigil' => ''))), ('stmts' => do {
53 1         2 (my $List_a = bless [], 'ARRAY');
54 1         3 (my $List_v = bless [], 'ARRAY');
55 1         1 push( @{$List_a}, Call->new(('arguments' => do {
  1         4  
56 1         3 (my $List_a = bless [], 'ARRAY');
57 1         3 (my $List_v = bless [], 'ARRAY');
58 1         3 push( @{$List_a}, Index->new(('index_exp' => Var->new(('name' => 'x'), ('namespace' => ''), ('sigil' => chr(36)), ('twigil' => ''))), ('obj' => Var->new(('name' => 'v'), ('namespace' => ''), ('sigil' => chr(64)), ('twigil' => '')))) );
  1         8  
59 1         9 $List_a
60             }), ('hyper' => ''), ('invocant' => Var->new(('name' => 'a'), ('namespace' => ''), ('sigil' => chr(64)), ('twigil' => ''))), ('method' => 'push')) );
61 1         6 $List_a
62 1         3 }))), ('cond' => Apply->new(('arguments' => do {
63 1         4 (my $List_a = bless [], 'ARRAY');
64 1         3 (my $List_v = bless [], 'ARRAY');
65 1         2 push( @{$List_a}, Val::Int->new(('int' => 0)) );
  1         5  
66 1         3 push( @{$List_a}, Apply->new(('arguments' => do {
  1         2  
67 1         3 (my $List_a = bless [], 'ARRAY');
68 1         2 (my $List_v = bless [], 'ARRAY');
69 1         2 push( @{$List_a}, Apply->new(('arguments' => do {
  1         4  
70 1         3 (my $List_a = bless [], 'ARRAY');
71 1         3 (my $List_v = bless [], 'ARRAY');
72 1         2 push( @{$List_a}, Call->new(('arguments' => do {
  1         3  
73 1         4 (my $List_a = bless [], 'ARRAY');
74 1         6 (my $List_v = bless [], 'ARRAY');
75 1         9 $List_a
76             }), ('hyper' => ''), ('invocant' => Var->new(('name' => 'v'), ('namespace' => ''), ('sigil' => chr(64)), ('twigil' => ''))), ('method' => 'elems')) );
77 1         2 push( @{$List_a}, Val::Int->new(('int' => 1)) );
  1         5  
78 1         5 $List_a
79             }), ('code' => 'infix:<->'), ('namespace' => '')) );
80 1         5 $List_a
81             }), ('code' => 'circumfix:<( )>'), ('namespace' => '')) );
82 1         6 $List_a
83             }), ('code' => 'infix:<..>'), ('namespace' => ''))), ('topic' => undef())) )
84             }
85             else {
86 29         40 push( @{$List_s}, Call->new(('arguments' => do {
  29         52  
87 29         65 (my $List_a = bless [], 'ARRAY');
88 29         53 (my $List_v = bless [], 'ARRAY');
89 29         38 push( @{$List_a}, $item );
  29         62  
90 29         154 $List_a
91             }), ('hyper' => ''), ('invocant' => Var->new(('name' => 'a'), ('namespace' => ''), ('sigil' => chr(64)), ('twigil' => ''))), ('method' => 'push')) )
92             }
93             };
94 22         44 return scalar (Do->new(('block' => Lit::Block->new(('sig' => undef()), ('stmts' => do {
95 22         44 (my $List_a = bless [], 'ARRAY');
96 22         40 (my $List_v = bless [], 'ARRAY');
97 22         33 push( @{$List_a}, Decl->new(('decl' => 'my'), ('type' => ''), ('var' => Var->new(('name' => 'a'), ('namespace' => ''), ('sigil' => chr(64)), ('twigil' => '')))) );
  22         121  
98 22         36 push( @{$List_a}, Decl->new(('decl' => 'my'), ('type' => ''), ('var' => Var->new(('name' => 'v'), ('namespace' => ''), ('sigil' => chr(64)), ('twigil' => '')))) );
  22         102  
99 22         46 ($List_v = $List_s);
100 22         36 for my $x ( @{(bless [0 .. ((scalar( @{$List_v} ) - 1))], 'ARRAY')} ) {
  22         33  
  22         90  
101 31         34 push( @{$List_a}, $List_v->[$x] )
  31         86  
102             };
103 22         46 push( @{$List_a}, Var->new(('name' => 'a'), ('namespace' => ''), ('sigil' => chr(64)), ('twigil' => '')) );
  22         93  
104 22         109 $List_a
105             })))))
106             }
107             }
108              
109             ;
110             {
111             package Lit::Hash;
112 4     4   8 sub new { shift; bless { @_ }, "Lit::Hash" }
  4         26  
113 0     0   0 sub hash1 { $_[0]->{hash1} };
114             sub expand_interpolation {
115 4     4   8 my $self = $_[0];
116 4         32 (my $List_items = bless [], 'ARRAY');
117 4         7 for my $item ( @{$self->{hash1}} ) {
  4         28  
118 4 100 66     119 if ((Main::isa($item, 'Apply') && ((($item->code() eq 'circumfix:<( )>') || ($item->code() eq 'list:<,>'))))) {
      66        
119 1         2 for my $arg ( @{(($item->arguments()))} ) {
  1         5  
120 1         2 push( @{$List_items}, $arg )
  1         5  
121             }
122             }
123             else {
124 3         4 push( @{$List_items}, $item )
  3         13  
125             }
126             };
127 4         14 (my $List_s = bless [], 'ARRAY');
128 4         8 for my $item ( @{$List_items} ) {
  4         9  
129 4 100 66     12 if ((Main::isa($item, 'Apply') && ($item->code() eq 'infix:<' . chr(61) . '>>'))) {
130 2         11 push( @{$List_s}, Apply->new(('arguments' => do {
  2         6  
131 2         5 (my $List_a = bless [], 'ARRAY');
132 2         5 (my $List_v = bless [], 'ARRAY');
133 2         3 push( @{$List_a}, Lookup->new(('index_exp' => $item->arguments()->[0]), ('obj' => Var->new(('name' => 'a'), ('namespace' => ''), ('sigil' => chr(37)), ('twigil' => '')))) );
  2         9  
134 2         5 push( @{$List_a}, $item->arguments()->[1] );
  2         9  
135 2         10 $List_a
136             }), ('code' => 'infix:<' . chr(61) . '>'), ('namespace' => '')) )
137             }
138             else {
139 2 50 33     6 if (((Main::isa($item, 'Var') && ($item->sigil() eq chr(37))) || (Main::isa($item, 'Apply') && ($item->code() eq 'prefix:<' . chr(37) . '>')))) {
      0        
      33        
140 2         13 push( @{$List_s}, For->new(('body' => Lit::Block->new(('sig' => Var->new(('name' => 'p'), ('namespace' => ''), ('sigil' => chr(36)), ('twigil' => ''))), ('stmts' => do {
141 2         13 (my $List_a = bless [], 'ARRAY');
142 2         6 (my $List_v = bless [], 'ARRAY');
143 2         4 push( @{$List_a}, Apply->new(('arguments' => do {
  2         5  
144 2         5 (my $List_a = bless [], 'ARRAY');
145 2         5 (my $List_v = bless [], 'ARRAY');
146 2         5 push( @{$List_a}, Lookup->new(('index_exp' => Call->new(('arguments' => undef()), ('hyper' => ''), ('invocant' => Var->new(('name' => 'p'), ('namespace' => ''), ('sigil' => chr(36)), ('twigil' => ''))), ('method' => 'key'))), ('obj' => Var->new(('name' => 'a'), ('namespace' => ''), ('sigil' => chr(37)), ('twigil' => '')))) );
  2         14  
147 2         5 push( @{$List_a}, Call->new(('arguments' => do {
  2         5  
148 2         5 (my $List_a = bless [], 'ARRAY');
149 2         5 (my $List_v = bless [], 'ARRAY');
150 2         19 $List_a
151             }), ('hyper' => ''), ('invocant' => Var->new(('name' => 'p'), ('namespace' => ''), ('sigil' => chr(36)), ('twigil' => ''))), ('method' => 'value')) );
152 2         10 $List_a
153             }), ('code' => 'infix:<' . chr(61) . '>'), ('namespace' => '')) );
154 2         10 $List_a
155 2         4 }))), ('cond' => Apply->new(('arguments' => do {
156 2         5 (my $List_a = bless [], 'ARRAY');
157 2         6 (my $List_v = bless [], 'ARRAY');
158 2         3 push( @{$List_a}, Apply->new(('arguments' => do {
  2         5  
159 2         4 (my $List_a = bless [], 'ARRAY');
160 2         5 (my $List_v = bless [], 'ARRAY');
161 2         3 push( @{$List_a}, Call->new(('arguments' => undef()), ('hyper' => ''), ('invocant' => $item), ('method' => 'pairs')) );
  2         9  
162 2         18 $List_a
163             }), ('code' => 'circumfix:<( )>'), ('namespace' => '')) );
164 2         10 $List_a
165             }), ('code' => 'prefix:<' . chr(64) . '>'), ('namespace' => ''))), ('topic' => undef())) )
166             }
167             else {
168 0         0 die('Error in hash composer: ', Main::perl($item, ))
169             }
170             }
171             };
172 4         11 return scalar (Do->new(('block' => Lit::Block->new(('sig' => undef()), ('stmts' => do {
173 4         11 (my $List_a = bless [], 'ARRAY');
174 4         9 (my $List_v = bless [], 'ARRAY');
175 4         8 push( @{$List_a}, Decl->new(('decl' => 'my'), ('type' => ''), ('var' => Var->new(('name' => 'a'), ('namespace' => ''), ('sigil' => chr(37)), ('twigil' => '')))) );
  4         26  
176 4         10 ($List_v = $List_s);
177 4         6 for my $x ( @{(bless [0 .. ((scalar( @{$List_v} ) - 1))], 'ARRAY')} ) {
  4         10  
  4         18  
178 4         6 push( @{$List_a}, $List_v->[$x] )
  4         13  
179             };
180 4         9 push( @{$List_a}, Var->new(('name' => 'a'), ('namespace' => ''), ('sigil' => chr(37)), ('twigil' => '')) );
  4         22  
181 4         20 $List_a
182             })))))
183             }
184             }
185              
186             ;
187             {
188             package Apply;
189 1234     1234   2118 sub new { shift; bless { @_ }, "Apply" }
  1234         11738  
190             ((my $Hash_op = bless {}, 'HASH') = do {
191             (my $Hash_a = bless {}, 'HASH');
192             ($Hash_a->{'infix:<+' . chr(61) . '>'} = 'infix:<+>');
193             ($Hash_a->{'infix:<-' . chr(61) . '>'} = 'infix:<->');
194             ($Hash_a->{'infix:<*' . chr(61) . '>'} = 'infix:<*>');
195             ($Hash_a->{'infix:<' . chr(47) . chr(61) . '>'} = 'infix:<' . chr(47) . '>');
196             ($Hash_a->{'infix:<' . chr(124) . chr(124) . chr(61) . '>'} = 'infix:<' . chr(124) . chr(124) . '>');
197             ($Hash_a->{'infix:<' . chr(38) . chr(38) . chr(61) . '>'} = 'infix:<' . chr(38) . chr(38) . '>');
198             ($Hash_a->{'infix:<' . chr(124) . chr(61) . '>'} = 'infix:<' . chr(124) . '>');
199             ($Hash_a->{'infix:<' . chr(38) . chr(61) . '>'} = 'infix:<' . chr(38) . '>');
200             ($Hash_a->{'infix:<' . chr(47) . chr(47) . chr(61) . '>'} = 'infix:<' . chr(47) . chr(47) . '>');
201             ($Hash_a->{'infix:<' . chr(126) . chr(61) . '>'} = 'list:<' . chr(126) . '>');
202             $Hash_a
203             });
204             sub op_assign {
205 1012     1012   2001 my $self = $_[0];
206 1012         2392 ((my $code) = $self->{code});
207 1012 50       2482 if (Main::isa($code, 'Str')) {
208              
209             }
210             else {
211 0         0 return scalar (0)
212             };
213 1012 50       3506 if (exists($Hash_op->{$code})) {
214 0         0 return scalar (Apply->new(('code' => 'infix:<' . chr(61) . '>'), ('arguments' => do {
215 0         0 (my $List_a = bless [], 'ARRAY');
216 0         0 (my $List_v = bless [], 'ARRAY');
217 0         0 push( @{$List_a}, $self->{arguments}->[0] );
  0         0  
218 0         0 push( @{$List_a}, Apply->new(('code' => $Hash_op->{$code}), ('arguments' => $self->{arguments})) );
  0         0  
219 0         0 $List_a
220             })))
221             };
222 1012         2750 return scalar (0)
223             }
224             }
225              
226             ;
227             {
228             package Do;
229 188     188   272 sub new { shift; bless { @_ }, "Do" }
  188         1052  
230             sub simplify {
231 123     123   156 my $self = $_[0];
232 123         133 (my $block);
233 123 100       370 if (Main::isa($self->{block}, 'Lit::Block')) {
234 70         267 ($block = $self->{block}->stmts())
235             }
236             else {
237 53         62 ($block = do {
238 53         123 (my $List_a = bless [], 'ARRAY');
239 53         104 (my $List_v = bless [], 'ARRAY');
240 53         68 push( @{$List_a}, $self->{block} );
  53         141  
241 53         115 $List_a
242             })
243             };
244 123 100       179 if ((scalar( @{$block} ) == 1)) {
  123         318  
245 71         121 ((my $stmt) = $block->[0]);
246 71 100 100     235 if ((Main::isa($stmt, 'Apply') && ($stmt->code() eq 'circumfix:<( )>'))) {
247 16         47 ((my $args) = $stmt->arguments());
248 16         50 return scalar (Do->new(('block' => $args->[0]))->simplify())
249             };
250 55 100       173 if (Main::isa($stmt, 'Do')) {
251 42         152 return scalar ($stmt->simplify())
252             }
253             };
254 65         191 return scalar (Do->new(('block' => $block)))
255             }
256             }
257              
258              
259             }
260              
261             1;