|  line  | 
 stmt  | 
 bran  | 
 cond  | 
 sub  | 
 pod  | 
 time  | 
 code  | 
| 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 package Sub::Lambda::Filter;  | 
| 
2
 | 
2
 | 
 
 | 
 
 | 
  
2
  
 | 
 
 | 
30352
 | 
 use strict;  | 
| 
 
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
    | 
| 
 
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
65
 | 
    | 
| 
3
 | 
2
 | 
 
 | 
 
 | 
  
2
  
 | 
 
 | 
11
 | 
 use warnings;  | 
| 
 
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
5
 | 
    | 
| 
 
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
56
 | 
    | 
| 
4
 | 
2
 | 
 
 | 
 
 | 
  
2
  
 | 
 
 | 
3060
 | 
 use Filter::Simple;  | 
| 
 
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
64847
 | 
    | 
| 
 
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
16
 | 
    | 
| 
5
 | 
2
 | 
 
 | 
 
 | 
  
2
  
 | 
 
 | 
1214
 | 
 use Sub::Lambda::Grammar qw/parse/;  | 
| 
 
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
12
 | 
    | 
| 
 
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
259
 | 
    | 
| 
6
 | 
2
 | 
 
 | 
 
 | 
  
2
  
 | 
 
 | 
25
 | 
 use Text::Balanced qw/extract_multiple extract_tagged/;  | 
| 
 
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
    | 
| 
 
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
1332
 | 
    | 
| 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub _parens ($) {   | 
| 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     extract_multiple($_[0],  | 
| 
10
 | 
862
 | 
 
 | 
 
 | 
  
862
  
 | 
 
 | 
79168
 | 
 		     [ sub { extract_tagged($_[0], qr{[(]}, qr{[)]})}]);  | 
| 
 
 | 
75
 | 
 
 | 
 
 | 
  
75
  
 | 
 
 | 
509
 | 
    | 
| 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub _compile ($) {  | 
| 
14
 | 
83
 | 
 
 | 
 
 | 
  
83
  
 | 
 
 | 
160
 | 
     my ($t) = @_;  | 
| 
15
 | 
83
 | 
 
 | 
 
 | 
 
 | 
 
 | 
468
 | 
     my ($T) = ($t =~ /^\s*[(](.*)[)]\s*$/s);  | 
| 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
17
 | 
83
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
221
 | 
     if ($T) {  | 
| 
18
 | 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
141
 | 
 	my $x = parse $t;  | 
| 
19
 | 
30
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
391540
 | 
 	return $x if defined($x);	  | 
| 
20
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
89
 | 
 	return '(' . (join '', map {_compile($_)} _parens $T) . ')';  | 
| 
 
 | 
49
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2853
 | 
    | 
| 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     } else {  | 
| 
22
 | 
53
 | 
 
 | 
 
 | 
 
 | 
 
 | 
118
 | 
 	my @p = _parens $t;  | 
| 
23
 | 
53
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
4305
 | 
 	return $p[0] unless (@p > 1);	  | 
| 
24
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
6
 | 
 	return join '', map { _compile($_) } @p;  | 
| 
 
 | 
32
 | 
 
 | 
 
 | 
 
 | 
 
 | 
87
 | 
    | 
| 
25
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
26
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
27
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
29
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 FILTER  { $_ = _compile $_ };  | 
| 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
31
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 1;  | 
| 
32
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
33
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 __END__  |