File Coverage

blib/lib/Inline/Foo.pm
Criterion Covered Total %
statement 56 59 94.9
branch 12 18 66.6
condition 2 4 50.0
subroutine 15 18 83.3
pod 1 7 14.2
total 86 106 81.1


line stmt bran cond sub pod time code
1 7     7   1428 use strict;
  7         10  
  7         723  
2             package Inline::Foo;
3              
4             require Inline;
5             our @ISA = qw(Inline);
6             our $VERSION = '0.87';
7              
8 7     7   51 use Carp;
  7         12  
  7         1008  
9 7     7   44 use File::Spec;
  7         11  
  7         6210  
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 1     1 0 2 my $key = shift;
22 1         239 "'$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 14     14 0 22 my $o = shift;
31 14   50     127 $o->{ILSM}{PATTERN} ||= 'foo-';
32 14   50     158 $o->{ILSM}{BAR} ||= 0;
33 14         49 while (@_) {
34 7         25 my ($key, $value) = splice @_, 0, 2;
35 7 100       20 if ($key eq 'PATTERN') {
36 3         7 $o->{ILSM}{PATTERN} = $value;
37 3         9 next;
38             }
39 4 100       13 if ($key eq 'BAR') {
40 3 50       16 croak usage_config_bar
41             unless $value =~ /^[01]$/;
42 3         7 $o->{ILSM}{BAR} = $value;
43 3         12 next;
44             }
45 1         3 croak usage_config($key);
46             }
47             }
48              
49             sub build {
50 13     13 0 18 my $o = shift;
51 13         37 my $code = $o->{API}{code};
52 13         38 my $pattern = $o->{ILSM}{PATTERN};
53 13         176 $code =~ s/$pattern//g;
54 13 100       63 $code =~ s/bar-//g if $o->{ILSM}{BAR};
55             {
56 13         17 package Foo::Tester;
57 13         25 our $VERSION = '0.02';
58 13     2   828 eval $code;
  2     2   38  
  2     2   9  
  3     3   84  
  4     1   65  
  2     1   9  
  2     1   15  
  1     0   5  
  0            
59             }
60 13 50       107 croak "Foo build failed:\n$@" if $@;
61 13         126 my $path = File::Spec->catdir($o->{API}{install_lib},'auto',$o->{API}{modpname});
62 13         27 my $obj = $o->{API}{location};
63 13 50       350 $o->mkpath($path) unless -d $path;
64 13 50       1566 open FOO_OBJ, "> $obj"
65             or croak "Can't open $obj for output\n$!";
66 13         88 binmode(FOO_OBJ, ':utf8');
67 13         270 print FOO_OBJ $code;
68 13         676 close \*FOO_OBJ;
69             }
70              
71             sub load {
72 13     13 0 25 my $o = shift;
73 13         31 my $obj = $o->{API}{location};
74 13 50       507 open FOO_OBJ, "< $obj"
75             or croak "Can't open $obj for output\n$!";
76 13         63 binmode(FOO_OBJ, ':utf8');
77 13         382 my $code = join '', ;
78 13         116 close \*FOO_OBJ;
79 13         1069 eval "package $o->{API}{pkg};\n$code";
80 13 50       132 croak "Unable to load Foo module $obj:\n$@" if $@;
81             }
82              
83             sub info {
84 3     3 1 138 my $o = shift;
85             }
86              
87             1;