| 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" ); |