File Coverage

blib/lib/Template/Declare.pm
Criterion Covered Total %
statement 153 168 91.0
branch 36 46 78.2
condition 14 21 66.6
subroutine 37 42 88.1
pod 18 18 100.0
total 258 295 87.4


line stmt bran cond sub pod time code
1 48     48   74148 use 5.006;
  48         139  
  48         1747  
2 48     48   200 use warnings;
  48         55  
  48         1201  
3 48     48   194 use strict;
  48         62  
  48         1776  
4              
5             package Template::Declare;
6 48     48   18932 use Template::Declare::Buffer;
  48         143  
  48         1144  
7 48     48   26713 use Class::ISA;
  48         113119  
  48         1685  
8 48     48   28241 use String::BufferStack;
  48         78741  
  48         2471  
9              
10             our $VERSION = '0.47';
11              
12 48     48   354 use base 'Class::Data::Inheritable';
  48         81  
  48         30535  
13             __PACKAGE__->mk_classdata('dispatch_to');
14             __PACKAGE__->mk_classdata('postprocessor');
15             __PACKAGE__->mk_classdata('strict');
16             __PACKAGE__->mk_classdata('templates');
17             __PACKAGE__->mk_classdata('private_templates');
18             __PACKAGE__->mk_classdata('buffer');
19             __PACKAGE__->mk_classdata('imported_into');
20             __PACKAGE__->mk_classdata('around_template');
21              
22             __PACKAGE__->dispatch_to( [] );
23             __PACKAGE__->postprocessor( sub { return wantarray ? @_ : $_[0] } );
24             __PACKAGE__->templates( {} );
25             __PACKAGE__->private_templates( {} );
26             __PACKAGE__->buffer( String::BufferStack->new );
27             __PACKAGE__->around_template( undef );
28              
29             *String::BufferStack::data = sub {
30 72     72   2119 my $ref = shift;
31 72 50       509 if (@_) {
32 0         0 warn "Template::Declare->buffer->data called with argument; this usage is deprecated";
33 0         0 ${$ref->buffer_ref} = join("", @_);
  0         0  
34             }
35 72         305 return $ref->buffer;
36             };
37              
38             our $TEMPLATE_VARS;
39              
40             =head1 NAME
41              
42             Template::Declare - Perlish declarative templates
43              
44             =head1 SYNOPSIS
45              
46             Here's an example of basic HTML usage:
47              
48             package MyApp::Templates;
49             use Template::Declare::Tags; # defaults to 'HTML'
50             use base 'Template::Declare';
51              
52             template simple => sub {
53             html {
54             head {}
55             body {
56             p { 'Hello, world wide web!' }
57             }
58             }
59             };
60              
61             package main;
62             use Template::Declare;
63             Template::Declare->init( dispatch_to => ['MyApp::Templates'] );
64             print Template::Declare->show( 'simple' );
65              
66             And here's the output:
67              
68            
69            
70            
71            

Hello, world wide web!

72            

73            
74            
75              
76             =head1 DESCRIPTION
77              
78             C is a pure-Perl declarative HTML/XUL/RDF/XML templating
79             system.
80              
81             Yes. Another one. There are many others like it, but this one is ours.
82              
83             A few key features and buzzwords:
84              
85             =over
86              
87             =item *
88              
89             All templates are 100% pure Perl code
90              
91             =item *
92              
93             Simple declarative syntax
94              
95             =item *
96              
97             No angle brackets
98              
99             =item *
100              
101             "Native" XML namespace and declaration support
102              
103             =item *
104              
105             Mixins
106              
107             =item *
108              
109             Inheritance
110              
111             =item *
112              
113             Delegation
114              
115             =item *
116              
117             Public and private templates
118              
119             =back
120              
121             =head1 GLOSSARY
122              
123             =over
124              
125             =item template class
126              
127             A subclass of Template::Declare in which one or more templates are defined
128             using the C