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   560520 use 5.006;
  48         170  
  48         5097  
2 48     48   764 use warnings;
  48         77  
  48         1937  
3 48     48   248 use strict;
  48         79  
  48         2092  
4              
5             package Template::Declare;
6 48     48   34645 use Template::Declare::Buffer;
  48         169  
  48         1444  
7 48     48   56116 use Class::ISA;
  48         197458  
  48         1931  
8 48     48   75283 use String::BufferStack;
  48         125882  
  48         2383  
9              
10             our $VERSION = '0.46';
11              
12 48     48   924 use base 'Class::Data::Inheritable';
  48         476  
  48         59031  
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   3461 my $ref = shift;
31 72 50       240 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         236 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