lib/Templer/Plugin/Perl.pm | |||
---|---|---|---|
Criterion | Covered | Total | % |
statement | 24 | 26 | 92.3 |
branch | 2 | 4 | 50.0 |
condition | 1 | 3 | 33.3 |
subroutine | 7 | 7 | 100.0 |
pod | 3 | 3 | 100.0 |
total | 37 | 43 | 86.0 |
line | stmt | bran | cond | sub | pod | time | code |
---|---|---|---|---|---|---|---|
1 | |||||||
2 | =head1 NAME | ||||||
3 | |||||||
4 | Templer::Plugin::Perl - A simple inline-perl plugin | ||||||
5 | |||||||
6 | =cut | ||||||
7 | |||||||
8 | =head1 DESCRIPTION | ||||||
9 | |||||||
10 | This class implements a formatter plugin for C |
||||||
11 | inline code to be executed as the page is generated. | ||||||
12 | |||||||
13 | This is carried out via the L |
||||||
14 | such as this to be executed: | ||||||
15 | |||||||
16 | =for example begin | ||||||
17 | |||||||
18 | Title: This is my page | ||||||
19 | format: perl | ||||||
20 | name: Steve | ||||||
21 | ---- | ||||||
22 | The sum of 1 + 1 is { 1 + 1 }. |
||||||
23 | My name is { $name } |
||||||
24 | |||||||
25 | =for example end | ||||||
26 | |||||||
27 | =cut | ||||||
28 | |||||||
29 | =head1 LICENSE | ||||||
30 | |||||||
31 | This module is free software; you can redistribute it and/or modify it | ||||||
32 | under the terms of either: | ||||||
33 | |||||||
34 | a) the GNU General Public License as published by the Free Software | ||||||
35 | Foundation; either version 2, or (at your option) any later version, | ||||||
36 | or | ||||||
37 | |||||||
38 | b) the Perl "Artistic License". | ||||||
39 | |||||||
40 | =cut | ||||||
41 | |||||||
42 | =head1 AUTHOR | ||||||
43 | |||||||
44 | Steve Kemp |
||||||
45 | |||||||
46 | =cut | ||||||
47 | |||||||
48 | =head1 COPYRIGHT AND LICENSE | ||||||
49 | |||||||
50 | Copyright (C) 2012-2015 Steve Kemp |
||||||
51 | |||||||
52 | This library is free software. You can modify and or distribute it under | ||||||
53 | the same terms as Perl itself. | ||||||
54 | |||||||
55 | =cut | ||||||
56 | |||||||
57 | =head1 METHODS | ||||||
58 | |||||||
59 | =cut | ||||||
60 | |||||||
61 | |||||||
62 | 11 | 11 | 5061 | use strict; | |||
11 | 20 | ||||||
11 | 272 | ||||||
63 | 11 | 11 | 91 | use warnings; | |||
11 | 24 | ||||||
11 | 2280 | ||||||
64 | |||||||
65 | |||||||
66 | package Templer::Plugin::Perl; | ||||||
67 | |||||||
68 | |||||||
69 | |||||||
70 | =head2 new | ||||||
71 | |||||||
72 | Constructor. No arguments are supported/expected. | ||||||
73 | |||||||
74 | =cut | ||||||
75 | |||||||
76 | sub new | ||||||
77 | { | ||||||
78 | 5 | 5 | 1 | 9 | my ( $proto, %supplied ) = (@_); | ||
79 | 5 | 33 | 19 | my $class = ref($proto) || $proto; | |||
80 | |||||||
81 | 5 | 7 | my $self = {}; | ||||
82 | 5 | 9 | bless( $self, $class ); | ||||
83 | 5 | 10 | return $self; | ||||
84 | } | ||||||
85 | |||||||
86 | |||||||
87 | =head2 available | ||||||
88 | |||||||
89 | This plugin is available if we've got the L |
||||||
90 | |||||||
91 | =cut | ||||||
92 | |||||||
93 | sub available | ||||||
94 | { | ||||||
95 | 2 | 2 | 1 | 3 | my $str = "use Text::Template;"; | ||
96 | |||||||
97 | ## no critic (Eval) | ||||||
98 | 2 | 1 | 113 | eval($str); | |||
1 | 1 | 620 | |||||
1 | 3042 | ||||||
1 | 26 | ||||||
1 | 5 | ||||||
1 | 2 | ||||||
1 | 25 | ||||||
99 | ## use critic | ||||||
100 | |||||||
101 | 2 | 50 | 8 | return ( $@ ? undef : 1 ); | |||
102 | } | ||||||
103 | |||||||
104 | |||||||
105 | =head2 format | ||||||
106 | |||||||
107 | Format the given text. | ||||||
108 | |||||||
109 | =cut | ||||||
110 | |||||||
111 | sub format | ||||||
112 | { | ||||||
113 | 1 | 1 | 1 | 4 | my ( $self, $str, $data ) = (@_); | ||
114 | |||||||
115 | 1 | 50 | 3 | if ( $self->available() ) | |||
116 | { | ||||||
117 | 1 | 4 | my $template = | ||||
118 | Text::Template->new( TYPE => "STRING", | ||||||
119 | SOURCE => $str ); | ||||||
120 | 1 | 128 | return ( $template->fill_in( HASH => $data ) ); | ||||
121 | } | ||||||
122 | else | ||||||
123 | { | ||||||
124 | 0 | 0 | warn | ||||
125 | "Perl formatting disabled as the Text::Template module isn't present.\n"; | ||||||
126 | 0 | 0 | $str; | ||||
127 | } | ||||||
128 | } | ||||||
129 | |||||||
130 | Templer::Plugin::Factory->new() | ||||||
131 | ->register_formatter( "perl", "Templer::Plugin::Perl" ); |