File Coverage

blib/lib/Inline/Foo.pm
Criterion Covered Total %
statement 53 59 89.8
branch 11 18 61.1
condition 2 4 50.0
subroutine 14 18 77.7
pod 1 7 14.2
total 81 106 76.4


line stmt bran cond sub pod time code
1 6     6   1073 use strict;
  6         48  
  6         571  
2             package Inline::Foo;
3              
4             require Inline;
5             our @ISA = qw(Inline);
6             our $VERSION = '0.85_003';
7              
8 6     6   70 use Carp;
  6         9  
  6         720  
9 6     6   37 use File::Spec;
  6         9  
  6         4104  
10              
11             sub register {
12             return {
13 0     0 0 0 language => 'Foo',
14             aliases => ['foo'],
15             type => 'interpreted',
16             suffix => 'foo',
17             };
18             }
19              
20             sub usage_config {
21 0     0 0 0 my $key = shift;
22 0         0 "'$key' is not a valid config option for Inline::Foo\n";
23             }
24              
25             sub usage_config_bar {
26 0     0 0 0 "Invalid value for Inline::Foo config option BAR";
27             }
28              
29             sub validate {
30 13     13 0 19 my $o = shift;
31 13   50     158 $o->{ILSM}{PATTERN} ||= 'foo-';
32 13   50     49 $o->{ILSM}{BAR} ||= 0;
33 13         38 while (@_) {
34 6         18 my ($key, $value) = splice @_, 0, 2;
35 6 100       15 if ($key eq 'PATTERN') {
36 3         7 $o->{ILSM}{PATTERN} = $value;
37 3         9 next;
38             }
39 3 50       7 if ($key eq 'BAR') {
40 3 50       14 croak usage_config_bar
41             unless $value =~ /^[01]$/;
42 3         5 $o->{ILSM}{BAR} = $value;
43 3         9 next;
44             }
45 0         0 croak usage_config($key);
46             }
47             }
48              
49             sub build {
50 13     13 0 17 my $o = shift;
51 13         33 my $code = $o->{API}{code};
52 13         19 my $pattern = $o->{ILSM}{PATTERN};
53 13         116 $code =~ s/$pattern//g;
54 13 100       44 $code =~ s/bar-//g if $o->{ILSM}{BAR};
55             {
56 13         22 package Foo::Tester;
57 13         15 our $VERSION = '0.02';
58 13     2   591 eval $code;
  2     2   31  
  2     2   6  
  3     3   84  
  4     1   47  
  2     1   6  
  2     1   10  
  1     0   5  
  0            
59             }
60 13 50       84 croak "Foo build failed:\n$@" if $@;
61 13         115 my $path = File::Spec->catdir($o->{API}{install_lib},'auto',$o->{API}{modpname});
62 13         110 my $obj = $o->{API}{location};
63 13 50       270 $o->mkpath($path) unless -d $path;
64 13 50       625 open FOO_OBJ, "> $obj"
65             or croak "Can't open $obj for output\n$!";
66 13         99 binmode(FOO_OBJ, ':utf8');
67 13         128 print FOO_OBJ $code;
68 13         380 close \*FOO_OBJ;
69             }
70              
71             sub load {
72 13     13 0 21 my $o = shift;
73 13         25 my $obj = $o->{API}{location};
74 13 50       388 open FOO_OBJ, "< $obj"
75             or croak "Can't open $obj for output\n$!";
76 13         68 binmode(FOO_OBJ, ':utf8');
77 13         4160 my $code = join '', ;
78 13         104 close \*FOO_OBJ;
79 13         654 eval "package $o->{API}{pkg};\n$code";
80 13 50       113 croak "Unable to load Foo module $obj:\n$@" if $@;
81             }
82              
83             sub info {
84 3     3 1 95 my $o = shift;
85             }
86              
87             1;