File Coverage

blib/lib/Template/Declare.pm
Criterion Covered Total %
statement 154 169 91.1
branch 34 44 77.2
condition 14 21 66.6
subroutine 37 42 88.1
pod 18 18 100.0
total 257 294 87.4


line stmt bran cond sub pod time code
1 46     46   68547 use 5.006;
  46         143  
  46         1973  
2 46     46   254 use warnings;
  46         68  
  46         2122  
3 46     46   233 use strict;
  46         63  
  46         2065  
4              
5             package Template::Declare;
6 46     46   19450 use Template::Declare::Buffer;
  46         152  
  46         1369  
7 46     46   32373 use Class::ISA;
  46         116364  
  46         1465  
8 46     46   28712 use String::BufferStack;
  46         87211  
  46         2306  
9              
10             our $VERSION = "0.40_02";
11              
12 46     46   325 use base 'Class::Data::Inheritable';
  46         116  
  46         30484  
13             __PACKAGE__->mk_classdata('dispatch_to');
14             __PACKAGE__->mk_classdata('postprocessor');
15             __PACKAGE__->mk_classdata('templates');
16             __PACKAGE__->mk_classdata('private_templates');
17             __PACKAGE__->mk_classdata('buffer');
18             __PACKAGE__->mk_classdata('imported_into');
19             __PACKAGE__->mk_classdata('around_template');
20              
21             __PACKAGE__->dispatch_to( [] );
22             __PACKAGE__->postprocessor( sub { return wantarray ? @_ : $_[0] } );
23             __PACKAGE__->templates( {} );
24             __PACKAGE__->private_templates( {} );
25             __PACKAGE__->buffer( String::BufferStack->new );
26             __PACKAGE__->around_template( undef );
27              
28             *String::BufferStack::data = sub {
29 72     72   2270 my $ref = shift;
30 72 50       176 if (@_) {
31 0         0 warn "Template::Declare->buffer->data called with argument; this usage is deprecated";
32 0         0 ${$ref->buffer_ref} = join("", @_);
  0         0  
33             }
34 72         198 return $ref->buffer;
35             };
36              
37             our $TEMPLATE_VARS;
38              
39             =head1 NAME
40              
41             Template::Declare - Perlish declarative templates
42              
43             =head1 SYNOPSIS
44              
45             Here's an example of basic HTML usage:
46              
47             package MyApp::Templates;
48             use Template::Declare::Tags; # defaults to 'HTML'
49             use base 'Template::Declare';
50              
51             template simple => sub {
52             html {
53             head {}
54             body {
55             p { 'Hello, world wide web!' }
56             }
57             }
58             };
59              
60             package main;
61             use Template::Declare;
62             Template::Declare->init( dispatch_to => ['MyApp::Templates'] );
63             print Template::Declare->show( 'simple' );
64              
65             And here's the output:
66              
67            
68            
69            
70            

Hello, world wide web!

71            

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