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   13466 use strict;
  6         51  
  6         661  
2             package Inline::Foo;
3              
4             require Inline;
5             our @ISA = qw(Inline);
6             our $VERSION = '0.85_002';
7              
8 6     6   38 use Carp;
  6         10  
  6         10936  
9 6     6   73 use File::Spec;
  6         12  
  6         5867  
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 25 my $o = shift;
31 13   50     155 $o->{ILSM}{PATTERN} ||= 'foo-';
32 13   50     54 $o->{ILSM}{BAR} ||= 0;
33 13         40 while (@_) {
34 6         21 my ($key, $value) = splice @_, 0, 2;
35 6 100       15 if ($key eq 'PATTERN') {
36 3         8 $o->{ILSM}{PATTERN} = $value;
37 3         9 next;
38             }
39 3 50       9 if ($key eq 'BAR') {
40 3 50       22 croak usage_config_bar
41             unless $value =~ /^[01]$/;
42 3         8 $o->{ILSM}{BAR} = $value;
43 3         10 next;
44             }
45 0         0 croak usage_config($key);
46             }
47             }
48              
49             sub build {
50 13     13 0 22 my $o = shift;
51 13         34 my $code = $o->{API}{code};
52 13         24 my $pattern = $o->{ILSM}{PATTERN};
53 13         142 $code =~ s/$pattern//g;
54 13 100       52 $code =~ s/bar-//g if $o->{ILSM}{BAR};
55             {
56 13         20 package Foo::Tester;
57 13         18 our $VERSION = '0.02';
58 13     2   876 eval $code;
  2     2   34  
  2     2   8  
  3     3   93  
  4     1   51  
  2     1   8  
  2     1   12  
  1     0   8  
  0            
59             }
60 13 50       97 croak "Foo build failed:\n$@" if $@;
61 13         122 my $path = File::Spec->catdir($o->{API}{install_lib},'auto',$o->{API}{modpname});
62 13         209 my $obj = $o->{API}{location};
63 13 50       311 $o->mkpath($path) unless -d $path;
64 13 50       1930 open FOO_OBJ, "> $obj"
65             or croak "Can't open $obj for output\n$!";
66 13         90 binmode(FOO_OBJ, ':utf8');
67 13         179 print FOO_OBJ $code;
68 13         471 close \*FOO_OBJ;
69             }
70              
71             sub load {
72 13     13 0 28 my $o = shift;
73 13         34 my $obj = $o->{API}{location};
74 13 50       477 open FOO_OBJ, "< $obj"
75             or croak "Can't open $obj for output\n$!";
76 13         80 binmode(FOO_OBJ, ':utf8');
77 13         4661 my $code = join '', ;
78 13         127 close \*FOO_OBJ;
79 13         885 eval "package $o->{API}{pkg};\n$code";
80 13 50       246 croak "Unable to load Foo module $obj:\n$@" if $@;
81             }
82              
83             sub info {
84 3     3 1 242 my $o = shift;
85             }
86              
87             1;