File Coverage

blib/lib/Mason.pm
Criterion Covered Total %
statement 1 3 33.3
branch n/a
condition n/a
subroutine 1 1 100.0
pod n/a
total 2 4 50.0


line stmt bran cond sub pod time code
1             package Mason;
2             $Mason::VERSION = '2.22';
3 20     20   14255 use Mason::Interp;
  0            
  0            
4             use Mason::PluginManager;
5             use Mason::Util qw(can_load uniq);
6             use Method::Signatures::Simple;
7             use strict;
8             use warnings;
9              
10             method new ($class: %params) {
11              
12             # Extract plugins and base_interp_class
13             #
14             my $plugin_specs = delete( $params{plugins} ) || [];
15             my $base_interp_class = delete( $params{base_interp_class} )
16             || $class->default_base_interp_class;
17              
18             # Process plugins and determine real interp_class
19             #
20             my @plugins = Mason::PluginManager->process_top_plugin_specs($plugin_specs);
21             my $interp_class =
22             Mason::PluginManager->apply_plugins_to_class( $base_interp_class, 'Interp', \@plugins );
23              
24             # Create and return interp
25             #
26             die "cannot pass mason_root_class directly"
27             if exists( $params{mason_root_class} );
28             return $interp_class->new(
29             mason_root_class => $class,
30             plugins => \@plugins,
31             %params
32             );
33             }
34              
35             method default_base_interp_class ($class:) {
36             my @candidates =
37             map { join( '::', $_, 'Interp' ) } ( uniq( $class, 'Mason' ) );
38             my ($base_class) = grep { can_load($_) } @candidates
39             or die sprintf( "cannot load %s for interp", join( ', ', @candidates ) );
40             return $base_class;
41             }
42              
43             1;
44              
45             __END__
46              
47             =pod
48              
49             =head1 NAME
50              
51             Mason - Powerful, high-performance templating for the web and beyond
52              
53             =head1 SYNOPSIS
54              
55             foo.mc:
56             % my $name = "Mason";
57             Hello world! Welcome to <% $name %>.
58              
59             #!/usr/local/bin/perl
60             use Mason;
61             my $mason = Mason->new(comp_root => '...');
62             print $mason->run('/foo')->output;
63              
64             =head1 DESCRIPTION
65              
66             Mason is a powerful Perl-based templating system, designed to generate dynamic
67             content of all kinds.
68              
69             Unlike many templating systems, Mason does not attempt to invent an alternate,
70             "easier" syntax for templates. It provides a set of syntax and features
71             specific to template creation, but underneath it is still clearly and proudly
72             recognizable as Perl.
73              
74             Mason is most often used for generating web pages. It has a companion web
75             framework, L<Poet|Poet>, designed to take maximum advantage of its routing and
76             content generation features. It can also be used as the templating layer for
77             web frameworks such as L<Catalyst|Catalyst::View::Mason2> and
78             L<Dancer|Dancer::Template::Mason2>.
79              
80             All documentation is indexed at L<Mason::Manual>.
81              
82             The previous major version of Mason (1.x) is available under the name
83             L<HTML::Mason>.
84              
85             =head1 SUPPORT
86              
87             The mailing list is C<mason-users@lists.sourceforge.net>. You must be
88             subscribed to send a message. To subscribe, visit
89             L<https://lists.sourceforge.net/lists/listinfo/mason-users>.
90              
91             You can also visit us at C<#mason> on L<irc://irc.perl.org/#mason>.
92              
93             Bugs and feature requests will be tracked at RT:
94              
95             http://rt.cpan.org/NoAuth/Bugs.html?Dist=Mason
96             bug-mason@rt.cpan.org
97              
98             The latest source code can be browsed and fetched at:
99              
100             http://github.com/jonswar/perl-mason
101             git clone git://github.com/jonswar/perl-mason.git
102              
103             The official Mason website is L<http://www.masonhq.com/>, however it contains
104             mostly information about L<Mason 1|HTML::Mason>. We're not sure what the future
105             of the website will be wrt Mason 2.
106              
107             =head1 ACKNOWLEDGEMENTS
108              
109             Thanks to Stevan Little and the L<Moose> team for the awesomeness of Moose,
110             which motivated me to create a second version of Mason years after I thought I
111             was done.
112              
113             Thanks to Tatsuhiko Miyagawa and the L<PSGI/Plack|http://plackperl.org/> team,
114             who freed me from ever worrying about server backends again.
115              
116             =head1 SEE ALSO
117              
118             L<HTML::Mason>
119              
120             =head1 AUTHOR
121              
122             Jonathan Swartz <swartz@pobox.com>
123              
124             =head1 COPYRIGHT AND LICENSE
125              
126             This software is copyright (c) 2012 by Jonathan Swartz.
127              
128             This is free software; you can redistribute it and/or modify it under
129             the same terms as the Perl 5 programming language system itself.
130              
131             =cut