File Coverage

blib/lib/Module/Faker/Heavy.pm
Criterion Covered Total %
statement 29 29 100.0
branch 7 10 70.0
condition 2 2 100.0
subroutine 6 6 100.0
pod n/a
total 44 47 93.6


line stmt bran cond sub pod time code
1 8     8   56 use strict;
  8         18  
  8         299  
2 8     8   39 use warnings;
  8         16  
  8         377  
3             package Module::Faker::Heavy;
4             # ABSTRACT: where the fake sausage gets made
5             $Module::Faker::Heavy::VERSION = '0.022';
6 8     8   45 use Carp ();
  8         17  
  8         126  
7 8     8   5659 use Text::Template;
  8         29552  
  8         2215  
8              
9             my $template;
10             sub _template {
11 38 100   38   161 return $template if $template;
12              
13 8         18 my $current;
14 8         50 while (my $line = <DATA>) {
15 312         440 chomp $line;
16 312 100       605 if ($line =~ /\A__([^_]+)__\z/) {
17 24         61 my $filename = $1;
18 24 50       114 if ($filename !~ /\A(?:DATA|END)\z/) {
19 24         46 $current = $filename;
20 24         82 next;
21             }
22             }
23              
24 288 50       460 Carp::confess "bogus data section: text outside of file" unless $current;
25              
26 288   100     1054 ($template->{$current} ||= '') .= "$line\n";
27             }
28              
29 8         61 return $template;
30             }
31              
32             sub _render {
33 38     38   103 my ($self, $name, $stash) = @_;
34              
35             Carp::confess "no file template for $name" unless
36 38 50       109 my $template = $self->_template->{ $name };
37              
38             my $text = Text::Template->fill_this_in(
39             $template,
40             DELIMITERS => [ '{{', '}}' ],
41 38         212 HASH => { map {; $_ => \($stash->{$_}) } keys %$stash },
  38         343  
42             );
43              
44 38         11888 return $text;
45             }
46              
47             1;
48              
49             =pod
50              
51             =encoding UTF-8
52              
53             =head1 NAME
54              
55             Module::Faker::Heavy - where the fake sausage gets made
56              
57             =head1 VERSION
58              
59             version 0.022
60              
61             =head1 AUTHOR
62              
63             Ricardo Signes <rjbs@cpan.org>
64              
65             =head1 COPYRIGHT AND LICENSE
66              
67             This software is copyright (c) 2008 by Ricardo Signes.
68              
69             This is free software; you can redistribute it and/or modify it under
70             the same terms as the Perl 5 programming language system itself.
71              
72             =cut
73              
74             __DATA__
75             __META.yml__
76             ---
77             name: {{ $dist->name }}
78             version: {{ $dist->version }}
79             abstract: {{ $dist->abstract }}
80             author:
81             {{ $OUT .= sprintf " - %s\n", $_ for $dist->authors; chomp $OUT; return }}
82             generated_by: Module::Faker version {{ $Module::Faker::VERSION }}
83             license: unknown{{ if (my %requires = $dist->requires) {
84             $OUT .= "\nrequires:";
85             $OUT .= sprintf "\n %s: %s", $_, (defined $requires{$_} ? $requires{$_} : '~') for keys %requires;
86             chomp $OUT;
87             }
88             return;
89             }}
90             meta-spec:
91             url: http://module-build.sourceforge.net/META-spec-v1.3.html
92             version: 1.3
93             __Makefile.PL__
94             use ExtUtils::MakeMaker;
95              
96             WriteMakefile(
97             DISTNAME => "{{ $dist->name }}",
98             NAME => "{{ $dist->_pkgy_name }}",
99             VERSION => "{{ $dist->version }}",
100             ABSTRACT => '{{ my $abs = $dist->abstract; $abs =~ s/'/\'/g; $abs }}',
101             PREREQ_PM => { {{
102             if (my %requires = $dist->_flat_prereqs ) {
103             $OUT .= sprintf "\n '%s' => '%s',", $_,
104             (defined $requires{$_} ? $requires{$_} : 0) for sort keys %requires;
105             }
106             return;
107             }}
108             },
109             );
110             __t/00-nop.t__
111             #!perl
112             use Test::More tests => 1;
113             ok(1);