Compare commits

...
20 Commits
Author SHA1 Message Date
Graham Ollis 7bf464398d v1.50
- update Changes to follow spec (GH#39, Сергей Романов)
        - minor documentation fixes
2013-08-08 16:51:35 -04:00
Graham Ollis a7a268267c fix the stopwords 2013-08-08 16:50:43 -04:00
Graham Ollis 19876306b6 tweaks 2013-08-08 16:45:01 -04:00
Graham Ollis 2b230680e5 Merge branch 'master' of github.com:plicease/mojox-renderer-tt 2013-08-08 16:37:25 -04:00
Graham Ollis b72fb699e9 add release tests
(fix minor stuff found by release tets)
2013-08-08 16:37:09 -04:00
Graham Ollis 9667221f20 Merge pull request #39 from sergeyromanov/patch-1
Reformat change log as per CPAN::Changes::Spec
2013-08-08 13:36:23 -07:00
Sergey Romanov a9ffb24a8f Revert dist.ini, put time and TZ back 2013-08-08 23:43:41 +04:00
Graham Ollis f0136a4a24 forgot that mojo doesn't support 5.8 anymore 2013-08-08 15:18:25 -04:00
Sergey Romanov 003b7c431c Adjust release date format within dzil 2013-08-08 21:42:19 +04:00
Sergey Romanov a55ae15582 Reformat change log as per CPAN::Changes::Spec 2013-08-08 21:22:02 +04:00
Graham Ollis 75d795fd6f more perl? 2013-08-08 09:22:36 -04:00
Graham Ollis 9c4e322dec v1.49
- documentation
2013-08-08 09:19:19 -04:00
Graham Ollis 48b19a5ab9 formatting fixes 2013-08-08 09:18:41 -04:00
Graham Ollis 6cd14f157a v1.48
- documentation
2013-08-08 09:13:32 -04:00
Graham Ollis da9f15fa17 you know what? Don't really need that. 2013-08-08 09:13:07 -04:00
Graham Ollis 5267ab7538 more doco improvements 2013-08-08 09:11:04 -04:00
Graham Ollis 90e2562862 tweak example 2013-08-08 09:05:58 -04:00
Graham Ollis e541ac92b7 include a full app example 2013-08-08 09:03:48 -04:00
Graham Ollis 6386e0620e doco 2013-08-08 08:51:56 -04:00
Graham Ollis cfbf3e8ea3 use mojolicious' full name in abstract 2013-08-07 09:52:27 -04:00
30 changed files with 764 additions and 112 deletions
+1
View File
@@ -4,6 +4,7 @@ install:
- cpanm -n Template - cpanm -n Template
script: HARNESS_IS_VERBOSE=1 prove -v -Ilib t script: HARNESS_IS_VERBOSE=1 prove -v -Ilib t
perl: perl:
- "5.19"
- "5.18" - "5.18"
- "5.16" - "5.16"
- "5.14" - "5.14"
+56 -47
View File
@@ -2,104 +2,114 @@ Revision history for Mojolicious::Plugin::TtRenderer
{{$NEXT}} {{$NEXT}}
1.47 2013-07-26 06:07:35 America/New_York 1.50 2013-08-08T16:51:21-0400
- update Changes to follow spec (GH#39, Сергей Романов)
- minor documentation fixes
1.49 2013-08-08T09:18:54-0400
- documentation
1.48 2013-08-08T09:13:19-0400
- documentation
1.47 2013-07-26T06:07:35-0400
- Template-Toolkit 2.25 compatability - Template-Toolkit 2.25 compatability
1.46 May 19, 2013 1.46 2013-05-19
- Mojolicious 4.0 compatability - Mojolicious 4.0 compatability
1.45 April 26, 2013 1.45 2013-04-26
- correctly support app->default->{layout} (GH#37, Fayland Lam) - correctly support app->default->{layout} (GH#37, Fayland Lam)
1.44 April 13, 2013 1.44 2013-04-13
- promote development changes to production - promote development changes to production
1.43_01 April 11, 2013 1.43_01 2013-04-11
- _template_modified returns value from super class instead of 1 if true (GH#36, Fayland Lam) - _template_modified returns value from super class instead of 1 if true (GH#36, Fayland Lam)
1.43 April 8, 2013 1.43 2013-04-08
- promote development changes - promote development changes
1.42_04 April 6, 2013 1.42_04 2013-04-06
- Updated meta for new github repo location - Updated meta for new github repo location
1.42_03 March 22, 2013 1.42_03 2013-03-22
- Allow custom relative paths for cache_dir (GH#35, Jason Crowther) - Allow custom relative paths for cache_dir (GH#35, Jason Crowther)
1.42_02 February 26, 2013 1.42_02 2013-02-26
- only create COMPILE_DIR based on UID if the user doesn't specify COMPILE_DIR - only create COMPILE_DIR based on UID if the user doesn't specify COMPILE_DIR
1.42_01 February 24, 2013 1.42_01 2013-02-24
- set COMPILE_DIR based on UID so that multiple users can use TtRenderer with default config - set COMPILE_DIR based on UID so that multiple users can use TtRenderer with default config
1.42 February 24, 2013 1.42 2013-02-24
- fix for test on solaris - fix for test on solaris
1.41 February 23, 2013 1.41 2013-02-23
- Additional testing diagnostics - Additional testing diagnostics
1.40 February 20, 2013 1.40 2013-02-20
- Added diagnostic for IO loop implementation in testing - Added diagnostic for IO loop implementation in testing
1.39 January 28, 2013 1.39 2013-01-28
- Documentation updates. - Documentation updates.
1.38 January 27, 2013 1.38 2013-01-27
- fixed but where DATA templates were not being rendered with empty renderer path - fixed but where DATA templates were not being rendered with empty renderer path
1.37 January 12, 2013 1.37 2013-01-12
- fix default_template2.t to use temp directory for COMPILE_DIR - fix default_template2.t to use temp directory for COMPILE_DIR
1.36 January 9, 2013 1.36 2013-01-09
- Use $provider->fetch to find templates (GH#34) - Use $provider->fetch to find templates (GH#34)
1.35 December 30, 2012 1.35 2012-12-30
- Documentation fix - Documentation fix
1.34 December 29, 2012 1.34 2012-12-29
- Include META.json in distribution. - Include META.json in distribution.
1.33 December 27, 2012 1.33 2012-12-27
- Fix hang in t/deep_recursion.t on *BSD - Fix hang in t/deep_recursion.t on *BSD
1.32 December 27, 2012 1.32 2012-12-27
- silenced a few annoying warnings during test - silenced a few annoying warnings during test
- use temp directory for COMPILE_DIR in tests to avoid failures if the - use temp directory for COMPILE_DIR in tests to avoid failures if the
default compile directory already exists and is owned by someone else. default compile directory already exists and is owned by someone else.
1.31 December 26, 2012 1.31 2012-12-26
- Set locale "C" in tests that rely on it - Set locale "C" in tests that rely on it
1.30 December 22, 2012 1.30 2012-12-22
- Don't rely on English locale in the test t/tt_plugin_lite_app.t - Don't rely on English locale in the test t/tt_plugin_lite_app.t
1.29 December 18, 2012 1.29 2012-12-18
- support multiple renderer paths - support multiple renderer paths
1.28 October 11, 2012 1.28 2012-10-11
- specify minimum perl version - specify minimum perl version
1.27 October 2, 2012 1.27 2012-10-02
- documentation fixes and updates. - documentation fixes and updates.
1.26 August 31, 2012 1.26 2012-08-31
- Windows compatability with Cwd::abs_path - Windows compatability with Cwd::abs_path
1.25 August 25, 2012 1.25 2012-08-25
- Return 0 on not found, die on error (GH#30) - Return 0 on not found, die on error (GH#30)
1.24 August 23, 2012 1.24 2012-08-23
- Compatibility with Mojolicious 3.33+ - Compatibility with Mojolicious 3.33+
1.23 August 23, 2012 1.23 2012-08-23
- Use die instead of render_exception (GH#29) - Use die instead of render_exception (GH#29)
1.22 August 21, 2012 1.22 2012-08-21
- Compatibility with Mojolicious 3.05+ (GH#24) - Compatibility with Mojolicious 3.05+ (GH#24)
- Avoid deep recursion when exception template dies (GH#25,GH26) - Avoid deep recursion when exception template dies (GH#25,GH26)
- Fixed test failures (GH#27,GH#28) - Fixed test failures (GH#27,GH#28)
1.21 June 5, 2012 1.21 2012-06-05
- Fixed double TT rendering on error (Matthias Bethke (GH#21)) - Fixed double TT rendering on error (Matthias Bethke (GH#21))
- Cache templates in tmpdir by default (Marcus Ramberg) - Cache templates in tmpdir by default (Marcus Ramberg)
- Require Mojolicious 2.51 to avoid memory leaks (GH#19) - Require Mojolicious 2.51 to avoid memory leaks (GH#19)
@@ -107,28 +117,28 @@ Revision history for Mojolicious::Plugin::TtRenderer
- Fix memory leaks, add tests for them (GH#18, Magnus Holm) - Fix memory leaks, add tests for them (GH#18, Magnus Holm)
- Use app->renderer->paths to find template directories (GH#17) - Use app->renderer->paths to find template directories (GH#17)
1.20 August 1, 2011 1.20 2011-08-01
- Drop use of MojoX namespace for Mojolicious::Plugin::TtRenderer:: - Drop use of MojoX namespace for Mojolicious::Plugin::TtRenderer::
(GH#12, Cosimo Streppone) (GH#12, Cosimo Streppone)
1.13 June 7, 2011 1.13 2011-06-07
- Compatibility with Mojolicious 1.3+ - Compatibility with Mojolicious 1.3+
1.12 February 28, 2011 1.12 2011-02-28
- Inline wrappers and includes now work on Windows - Inline wrappers and includes now work on Windows
(GH#13, Christiaan Kras) (GH#13, Christiaan Kras)
1.11 February 6, 2011 1.11 2011-02-06
- Change to use relative paths (Marcus Ramberg) - Change to use relative paths (Marcus Ramberg)
- Add exception template for tests - Add exception template for tests
1.10 February 5, 2011 1.10 2011-02-05
- Support Mojolicious 'layout'/'extends' (Maxim Vuets, Marcus - Support Mojolicious 'layout'/'extends' (Maxim Vuets, Marcus
Ramberg) Ramberg)
- Fix Strawberry Perl tests (RT#65282, Christiaan Kras, Ask) - Fix Strawberry Perl tests (RT#65282, Christiaan Kras, Ask)
- Update bugtracker URL in META.yml - Update bugtracker URL in META.yml
1.0 January 22, 2011 1.0 2011-01-22
- Require (and be compatible with) Mojolicious 1.0+ - Require (and be compatible with) Mojolicious 1.0+
- Added inline template support (Viacheslav Tykhanovskyi & Ask) - Added inline template support (Viacheslav Tykhanovskyi & Ask)
- Fix inline rendering and test failures (Marcus Ramberg) - Fix inline rendering and test failures (Marcus Ramberg)
@@ -137,31 +147,31 @@ Revision history for Mojolicious::Plugin::TtRenderer
- Fix unicode test (Marcus & Spleenjack) - Fix unicode test (Marcus & Spleenjack)
- Replaced deprecated Mojo dependence with Mojolicious (spleenjack) - Replaced deprecated Mojo dependence with Mojolicious (spleenjack)
0.40 August 2, 2010 0.40 2010-08-02
- Updated for newer Mojo (Viacheslav Tykhanovskyi) - Updated for newer Mojo (Viacheslav Tykhanovskyi)
- Added helpers (Viacheslav Tykhanovskyi) - Added helpers (Viacheslav Tykhanovskyi)
- Documentation updates - Documentation updates
0.31 September 11, 2009 0.31 2009-09-11
- Remove deprecated 'new' method - Remove deprecated 'new' method
- Update MANIFEST (oops, thanks Sebastian) - Update MANIFEST (oops, thanks Sebastian)
0.30 September 9, 2009 0.30 2009-09-09
- Revert the change of template_path stash key - Revert the change of template_path stash key
- Reflect recent changes in mojo project (v0.991251) (Sebastian Knapp) - Reflect recent changes in mojo project (v0.991251) (Sebastian Knapp)
- One test with Mojolicious added (Sebastian Knapp) - One test with Mojolicious added (Sebastian Knapp)
0.21 July 29, 2009 0.21 2009-07-29
- Update stash key from 'template_path' to 'template' to - Update stash key from 'template_path' to 'template' to
match mojo change (Sebastian Knapp) match mojo change (Sebastian Knapp)
0.20 December 9, 2008 0.20 2008-12-09
- Updates to work with Mojo 0.9 - Updates to work with Mojo 0.9
- Add default INCLUDE_PATH - Add default INCLUDE_PATH
- Made default compile dir not Unix specific (Viacheslav - Made default compile dir not Unix specific (Viacheslav
Tykhanovskyi) Tykhanovskyi)
0.10 November 12, 2008 0.10 2008-11-12
- Update to work with named parameters in new version of Mojo - Update to work with named parameters in new version of Mojo
- Instead of "tx" pass the context in the "c" variable - Instead of "tx" pass the context in the "c" variable
- Rename "new" to "build" - Rename "new" to "build"
@@ -169,10 +179,9 @@ Revision history for Mojolicious::Plugin::TtRenderer
- Update to work with new error handling in Mojo - Update to work with new error handling in Mojo
(Viacheslav Tykhanovskyi) (Viacheslav Tykhanovskyi)
0.02 November 10, 2008 0.02 2008-11-10
- Add template_options parameter - Add template_options parameter
- Fix Template dependency - Fix Template dependency
0.01 November 9, 2008 0.01 2008-11-09
- First version, released on an unsuspecting world. - First version, released on an unsuspecting world.
+171 -17
View File
@@ -2,45 +2,197 @@
=head1 NAME =head1 NAME
Mojolicious::Plugin::TtRenderer - Template Renderer Plugin Mojolicious::Plugin::TtRenderer - Template Renderer Plugin for Mojolicious
=head1 VERSION =head1 VERSION
version 1.47 version 1.50
=head1 SYNOPSIS =head1 SYNOPSIS
# Mojolicious L<Mojolicious::Lite>:
$self->plugin('tt_renderer');
$self->plugin(tt_renderer => {template_options => {FILTERS => [ ... ]}});
# Mojolicious::Lite
plugin 'tt_renderer'; plugin 'tt_renderer';
plugin tt_renderer => {template_options => {FILTERS => [ ... ]}};
L<Mojolicious>
$self->plugin('tt_renderer');
=head1 DESCRIPTION =head1 DESCRIPTION
L<Mojolicious::Plugin::TtRenderer> is a simple loader for This plugin is a simple Template Toolkit renderer for L<Mojolicious>.
L<Mojolicious::Plugin::TtRenderer::Engine>. Its defaults are usually reasonable, although for finer grain detail in
configuration you may want to use
L<Mojolicious::Plugin::TtRenderer::Engine> directly.
=encoding utf-8 =encoding utf-8
=head1 METHODS =for stopwords Bjørn
Szász
Árpád
L<Mojolicious::Plugin::TtRenderer> inherits all methods from =head1 OPTIONS
L<Mojolicious::Plugin> and implements the following new ones.
=head2 C<register> These are the options that can be passed in as arguments to this plugin.
$plugin->register; =head2 template_options
Register renderer in L<Mojolicious> application. Configuration hash passed into L<Template>'s constructor, see
L<Template Toolkit's configuration summary|Template#CONFIGURATION-SUMMARY>
for details. Here is an example using the L<Mojolicious::Lite> form:
=head1 EXTRA STASH VARIABLES plugin 'tt_renderer' => {
template_options => {
PRE_CHOMP => 1,
POST_CHOMP => 1,
TRIM => 1,
},
};
Here is the same example using the full L<Mojolicious> app form:
package MyApp;
use Mojo::Base qw( Mojolicious );
sub startup {
my($self) = @_;
$self->plugin('tt_renderer' => {
template_options => {
PRE_CHOMP => 1,
POST_CHOMP => 1,
TRIM => 1,
},
}
...
}
These options will be used if you do not override them:
=over 4
=item INCLUDE_PATH
Generated based on your application's renderer's configuration. It
will include all renderer paths, in addition to search files located
in the C<__DATA__> section by the usual logic used by L<Mojolicious>.
=item COMPILE_EXT
C<.ttc>
=item UNICODE
C<1> (true)
=item ENCODING
C<utf-87>
=item CACHE_SIZE
C<128>
=item RELATIVE
C<1> (true)
=back
=head2 cache_dir
Specifies the directory in which compiled template files are
written. This:
plugin 'tt_renderer', { cache_dir => 'some/path' };
is equivalent to
plugin 'tt_renderer', { template_options { COMPILE_DIR => 'some/path' } };
except in the first example relative paths are relative to the L<Mojolicious>
app's home directory (C<$app-E<gt>home>).
=head1 STASH
=head2 h
Helpers are available via the C<h> entry in the stash.
<a href="[% h.url_for('index') %]">go back to index</a>
=head2 c
The current controller instance can be accessed as C<c>. The current controller instance can be accessed as C<c>.
[% c.req.headers.host %] I see you are requesting a document from [% c.req.headers.host %].
=head1 EXAMPLES
L<Mojolicious::Lite> example:
use Mojolicious::Lite;
plugin 'tt_renderer';
get '/' => sub {
my $self = shift;
$self->render('index');
};
app->start;
__DATA__
@@ index.html.tt
[%
WRAPPER 'layouts/default.html.tt'
title = 'Welcome'
%]
<p>Welcome to the Mojolicious real-time web framework!</p>
<p>Welcome to the TtRenderer plugin!</p>
[% END %]
@@ layouts/default.html.tt
<!DOCTYPE html>
<html>
<head><title>[% title %]</title></head>
<body>[% content %]</body>
</html>
L<Mojolicious> example:
package MyApp;
use Mojo::Base 'Mojolicious';
sub startup {
my $self = shift;
$self->plugin('tt_renderer');
my $r = $self->routes;
$r->get('/')->to('example#welcome');
}
1;
package MyApp::Example;
use Mojo::Base 'Mojolicious::Controller';
# This action will render a template
sub welcome {
my $self = shift;
# Render template "example/welcome.html.tt" with message
$self->render(
message => 'Looks like your TtRenderer is working!');
}
1;
These are also included with the C<Mojolicious::Plugin::TtRenderer>
distribution, including the support files required for the full
L<Mojolicious> app example.
=head1 SEE ALSO =head1 SEE ALSO
@@ -83,6 +235,8 @@ spleenjack
Árpád Szász Árpád Szász
Сергей Романов
=head1 COPYRIGHT AND LICENSE =head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Ask Bjørn Hansen. This software is copyright (c) 2013 by Ask Bjørn Hansen.
+8 -1
View File
@@ -5,9 +5,10 @@ license = Perl_5
copyright_holder = Ask Bjørn Hansen copyright_holder = Ask Bjørn Hansen
# copyright_year = 2009 # copyright_year = 2009
version = 1.47 version = 1.50
[@Author::Plicease] [@Author::Plicease]
release_tests = 1
[Prereqs] [Prereqs]
Mojolicious = 3.33 Mojolicious = 3.33
@@ -55,5 +56,11 @@ contributor = Fayland Lam
contributor = Jason Crowther contributor = Jason Crowther
contributor = spleenjack contributor = spleenjack
contributor = Árpád Szász contributor = Árpád Szász
contributor = Сергей Романов
[Author::Plicease::Upload] [Author::Plicease::Upload]
[InsertExample]
[MetaNoIndex]
directory = example
+8
View File
@@ -0,0 +1,8 @@
Included in this directory are two examples of how to use the Template Toolkit
Renderer.
myapp.pl - Mojolicious::Lite example
myapp/ - full Mojolicious application example
They were created as minor modifications of the applications generated
using the 'mojo generate' command.
+28
View File
@@ -0,0 +1,28 @@
use Mojolicious::Lite;
plugin 'tt_renderer';
get '/' => sub {
my $self = shift;
$self->render('index');
};
app->start;
__DATA__
@@ index.html.tt
[%
WRAPPER 'layouts/default.html.tt'
title = 'Welcome'
%]
<p>Welcome to the Mojolicious real-time web framework!</p>
<p>Welcome to the TtRenderer plugin!</p>
[% END %]
@@ layouts/default.html.tt
<!DOCTYPE html>
<html>
<head><title>[% title %]</title></head>
<body>[% content %]</body>
</html>
+11
View File
@@ -0,0 +1,11 @@
package MyApp;
use Mojo::Base 'Mojolicious';
sub startup {
my $self = shift;
$self->plugin('tt_renderer');
my $r = $self->routes;
$r->get('/')->to('example#welcome');
}
1;
+13
View File
@@ -0,0 +1,13 @@
package MyApp::Example;
use Mojo::Base 'Mojolicious::Controller';
# This action will render a template
sub welcome {
my $self = shift;
# Render template "example/welcome.html.tt" with message
$self->render(
message => 'Looks like your TtRenderer is working!');
}
1;
+21
View File
@@ -0,0 +1,21 @@
[Thu Aug 8 09:00:16 2013] [info] Listening at "http://*:3000".
[Thu Aug 8 09:00:20 2013] [debug] Your secret passphrase needs to be changed!!!
[Thu Aug 8 09:00:20 2013] [debug] GET "/".
[Thu Aug 8 09:00:20 2013] [debug] Routing to controller "MyApp::Example" and action "welcome".
[Thu Aug 8 09:00:20 2013] [error] parse error - example/welcome.html.tt line 8: unexpected end of input
[Thu Aug 8 09:00:20 2013] [debug] Template "exception.development.html.ep" not found.
[Thu Aug 8 09:00:20 2013] [debug] Template "exception.html.ep" not found.
[Thu Aug 8 09:00:20 2013] [debug] Rendering inline template.
[Thu Aug 8 09:00:20 2013] [debug] Rendering inline template.
[Thu Aug 8 09:00:20 2013] [debug] 500 Internal Server Error (0.061556s, 16.245/s).
[Thu Aug 8 09:00:41 2013] [info] Listening at "http://*:3000".
[Thu Aug 8 09:00:44 2013] [debug] Your secret passphrase needs to be changed!!!
[Thu Aug 8 09:00:44 2013] [debug] GET "/".
[Thu Aug 8 09:00:44 2013] [debug] Routing to controller "MyApp::Example" and action "welcome".
[Thu Aug 8 09:00:44 2013] [debug] 200 OK (0.032461s, 30.806/s).
[Thu Aug 8 09:00:47 2013] [debug] GET "/".
[Thu Aug 8 09:00:47 2013] [debug] Routing to controller "MyApp::Example" and action "welcome".
[Thu Aug 8 09:00:47 2013] [debug] 200 OK (0.001260s, 793.651/s).
[Thu Aug 8 09:00:52 2013] [debug] GET "/".
[Thu Aug 8 09:00:52 2013] [debug] Routing to controller "MyApp::Example" and action "welcome".
[Thu Aug 8 09:00:52 2013] [debug] 200 OK (0.001683s, 594.177/s).
+11
View File
@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html>
<head>
<title>Welcome to the Mojolicious real-time web framework!</title>
</head>
<body>
<h2>Welcome to the Mojolicious real-time web framework!</h2>
This is the static document "public/index.html",
<a href="/">click here</a> to get back to the start.
</body>
</html>
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/env perl
use strict;
use warnings;
use FindBin;
BEGIN { unshift @INC, "$FindBin::Bin/../lib" }
# Start command line interface for application
require Mojolicious::Commands;
Mojolicious::Commands->start_app('MyApp');
+9
View File
@@ -0,0 +1,9 @@
use Mojo::Base -strict;
use Test::More;
use Test::Mojo;
my $t = Test::Mojo->new('MyApp');
$t->get_ok('/')->status_is(200)->content_like(qr/Mojolicious/i);
done_testing();
@@ -0,0 +1,10 @@
[%
WRAPPER 'layouts/default.html.tt'
title = 'Welcome'
%]
<h2>[% $message %]</h2>
This page was generated from the template "templates/example/welcome.html.ep"
and the layout "templates/layouts/default.html.ep",
<a href="[% url_for %]">click here</a> to reload the page or
<a href="/index.html">here</a> to move forward to a static page.
[% END %]
@@ -0,0 +1,5 @@
<!DOCTYPE html>
<html>
<head><title>[% title %]</title></head>
<body>[% content %]</body>
</html>
+123 -16
View File
@@ -4,7 +4,7 @@ use strict;
use warnings; use warnings;
use v5.10; use v5.10;
# ABSTRACT: Template Renderer Plugin # ABSTRACT: Template Renderer Plugin for Mojolicious
# VERSION # VERSION
use base 'Mojolicious::Plugin'; use base 'Mojolicious::Plugin';
@@ -29,37 +29,144 @@ __END__
=encoding utf-8 =encoding utf-8
=begin stopwords
Bjørn
Szász
Árpád
=end stopwords
=head1 SYNOPSIS =head1 SYNOPSIS
# Mojolicious L<Mojolicious::Lite>:
$self->plugin('tt_renderer');
$self->plugin(tt_renderer => {template_options => {FILTERS => [ ... ]}});
# Mojolicious::Lite
plugin 'tt_renderer'; plugin 'tt_renderer';
plugin tt_renderer => {template_options => {FILTERS => [ ... ]}};
L<Mojolicious>
$self->plugin('tt_renderer');
=head1 DESCRIPTION =head1 DESCRIPTION
L<Mojolicious::Plugin::TtRenderer> is a simple loader for This plugin is a simple Template Toolkit renderer for L<Mojolicious>.
L<Mojolicious::Plugin::TtRenderer::Engine>. Its defaults are usually reasonable, although for finer grain detail in
configuration you may want to use
L<Mojolicious::Plugin::TtRenderer::Engine> directly.
=head1 METHODS =head1 OPTIONS
L<Mojolicious::Plugin::TtRenderer> inherits all methods from These are the options that can be passed in as arguments to this plugin.
L<Mojolicious::Plugin> and implements the following new ones.
=head2 C<register> =head2 template_options
$plugin->register; Configuration hash passed into L<Template>'s constructor, see
L<Template Toolkit's configuration summary|Template#CONFIGURATION-SUMMARY>
for details. Here is an example using the L<Mojolicious::Lite> form:
Register renderer in L<Mojolicious> application. plugin 'tt_renderer' => {
template_options => {
PRE_CHOMP => 1,
POST_CHOMP => 1,
TRIM => 1,
},
};
=head1 EXTRA STASH VARIABLES Here is the same example using the full L<Mojolicious> app form:
package MyApp;
use Mojo::Base qw( Mojolicious );
sub startup {
my($self) = @_;
$self->plugin('tt_renderer' => {
template_options => {
PRE_CHOMP => 1,
POST_CHOMP => 1,
TRIM => 1,
},
}
...
}
These options will be used if you do not override them:
=over 4
=item INCLUDE_PATH
Generated based on your application's renderer's configuration. It
will include all renderer paths, in addition to search files located
in the C<__DATA__> section by the usual logic used by L<Mojolicious>.
=item COMPILE_EXT
C<.ttc>
=item UNICODE
C<1> (true)
=item ENCODING
C<utf-87>
=item CACHE_SIZE
C<128>
=item RELATIVE
C<1> (true)
=back
=head2 cache_dir
Specifies the directory in which compiled template files are
written. This:
plugin 'tt_renderer', { cache_dir => 'some/path' };
is equivalent to
plugin 'tt_renderer', { template_options { COMPILE_DIR => 'some/path' } };
except in the first example relative paths are relative to the L<Mojolicious>
app's home directory (C<$app-E<gt>home>).
=head1 STASH
=head2 h
Helpers are available via the C<h> entry in the stash.
<a href="[% h.url_for('index') %]">go back to index</a>
=head2 c
The current controller instance can be accessed as C<c>. The current controller instance can be accessed as C<c>.
[% c.req.headers.host %] I see you are requesting a document from [% c.req.headers.host %].
=head1 EXAMPLES
L<Mojolicious::Lite> example:
# EXAMPLE: example/myapp.pl
L<Mojolicious> example:
# EXAMPLE: example/myapp/lib/MyApp.pm
# EXAMPLE: example/myapp/lib/MyApp/Example.pm
These are also included with the C<Mojolicious::Plugin::TtRenderer>
distribution, including the support files required for the full
L<Mojolicious> app example.
=head1 SEE ALSO =head1 SEE ALSO
+3 -3
View File
@@ -12,7 +12,7 @@ use Cwd qw/abs_path/;
use Scalar::Util 'weaken'; use Scalar::Util 'weaken';
use POSIX ':errno_h'; use POSIX ':errno_h';
# ABSTRACT: Template Toolkit renderer for Mojo # ABSTRACT: Template Toolkit renderer for Mojolicious
# VERSION # VERSION
__PACKAGE__->attr('tt'); __PACKAGE__->attr('tt');
@@ -252,7 +252,7 @@ Add the handler:
$self->renderer->add_handler( tt => $tt ); $self->renderer->add_handler( tt => $tt );
} }
Template parameter are taken from C< $c->stash >. Template parameter are taken from C<$c-E<gt>stash>.
=head1 RENDERING =head1 RENDERING
@@ -294,7 +294,7 @@ object. When used the INCLUDE_PATH will be set to
A hash reference of options that are passed to Template->new(). Note that if you A hash reference of options that are passed to Template->new(). Note that if you
specify an C<INCLUDE_PATH> through this option it will remove the DATA section specify an C<INCLUDE_PATH> through this option it will remove the DATA section
templates from your path. A better way to specify an C<INCLUDE_PATH> if you also templates from your path. A better way to specify an C<INCLUDE_PATH> if you also
want to use DATA section templates it by manipulting the L<Mojolicious::Renderer> want to use DATA section templates it by manipulating the L<Mojolicious::Renderer>
path. path.
=item cache_dir =item cache_dir
+4 -6
View File
@@ -1,9 +1,7 @@
#!perl use strict;
use warnings;
use Test::More tests => 2; use Test::More tests => 2;
BEGIN { use_ok( 'Mojolicious::Plugin::TtRenderer' );
use_ok( 'Mojolicious::Plugin::TtRenderer' ); use_ok( 'Mojolicious::Plugin::TtRenderer::Engine' );
use_ok( 'Mojolicious::Plugin::TtRenderer::Engine' );
}
-21
View File
@@ -1,21 +0,0 @@
use strict;
use warnings;
use Test::More;
# Ensure a recent version of Test::Pod::Coverage
my $min_tpc = 1.08;
eval "use Test::Pod::Coverage $min_tpc";
plan skip_all => "Test::Pod::Coverage $min_tpc required for testing POD coverage"
if $@;
# Test::Pod::Coverage doesn't require a minimum Pod::Coverage version,
# but older versions don't recognize some common documentation styles
my $min_pc = 0.18;
eval "use Pod::Coverage $min_pc";
plan skip_all => "Pod::Coverage $min_pc required for testing POD coverage"
if $@;
plan tests => 2;
pod_coverage_ok('Mojolicious::Plugin::TtRenderer');
pod_coverage_ok('Mojolicious::Plugin::TtRenderer::Engine', { also_private => [qr{^tt$}] } );
+3 -1
View File
@@ -1,5 +1,7 @@
package package
Foo; Foo;
use strict;
use warnings;
1; 1;
__DATA__ __DATA__
+9
View File
@@ -0,0 +1,9 @@
use strict;
use warnings;
use Test::More tests => 1;
SKIP: {
eval q{ use Dist::Zilla::PluginBundle::Author::Plicease };
skip '[@Plicease] is not installed', 1 if $@;
ok $Dist::Zilla::PluginBundle::Author::Plicease::VERSION >= 0.7, '[@Plicease] >= 0.7';
}
+27
View File
@@ -0,0 +1,27 @@
use strict;
use warnings;
use Test::More;
BEGIN {
plan skip_all => 'test requires Test::CPAN::Changes'
unless eval q{ use Test::CPAN::Changes; 1 };
};
use Test::CPAN::Changes;
use FindBin;
use File::Spec;
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
do {
my $old = \&Test::Builder::carp;
my $new = sub {
my($self, @messages) = @_;
return if $messages[0] =~ /^Date ".*" is not in the recommend format/;
$old->($self, @messages);
};
no warnings 'redefine';
*Test::Builder::carp = $new;
};
changes_file_ok;
done_testing;
+14
View File
@@ -0,0 +1,14 @@
use strict;
use warnings;
use Test::More;
BEGIN {
plan skip_all => 'test requires Test::EOL'
unless eval q{ use Test::EOL; 1 };
};
use Test::EOL;
use FindBin;
use File::Spec;
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
all_perl_files_ok(grep { -e $_ } qw( bin lib t Makefile.PL ));
+18
View File
@@ -0,0 +1,18 @@
use strict;
use warnings;
use Test::More;
BEGIN {
plan skip_all => 'test requires Test::Fixme'
unless eval q{ use Test::Fixme; 1 };
};
use Test::Fixme 0.07;
use FindBin;
use File::Spec;
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
run_tests(
match => qr/FIXME/,
where => [ grep { -e $_ } qw( bin lib t Makefile.PL )],
);
+15
View File
@@ -0,0 +1,15 @@
use strict;
use warnings;
use Test::More;
BEGIN {
plan skip_all => 'test requires Test::NoTabs'
unless eval q{ use Test::NoTabs; 1 };
};
use Test::NoTabs;
use FindBin;
use File::Spec;
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
all_perl_files_ok( grep { -e $_ } qw( bin lib t Makefile.PL ));
+15
View File
@@ -0,0 +1,15 @@
use strict;
use warnings;
use Test::More;
BEGIN {
plan skip_all => 'test requires Test::Pod'
unless eval q{ use Test::Pod; 1 };
};
use Test::Pod;
use FindBin;
use File::Spec;
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
all_pod_files_ok( grep { -e $_ } qw( bin lib ));
+67
View File
@@ -0,0 +1,67 @@
use strict;
use warnings;
use Test::More;
BEGIN {
plan skip_all => 'test requires Test::Pod::Coverage'
unless eval q{ use Test::Pod::Coverage; 1 };
plan skip_all => 'test requires YAML'
unless eval q{ use YAML; 1; };
};
use Test::Pod::Coverage;
use YAML qw( LoadFile );
use FindBin;
use File::Spec;
my $config_filename = File::Spec->catfile(
$FindBin::Bin, 'release.yml'
);
my $config;
$config = LoadFile($config_filename)
if -r $config_filename;
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
my @private_classes;
my %private_methods;
foreach my $private (@{ $config->{pod_coverage}->{private} })
{
my($class,$method) = split /#/, $private;
if(defined $class && $class ne '')
{
my $regex = eval 'qr{^' . $class . '$}';
if(defined $method && $method ne '')
{
push @private_classes, { regex => $regex, method => $method };
}
else
{
push @private_classes, { regex => $regex, all => 1 };
}
}
elsif(defined $method && $method ne '')
{
$private_methods{$_} = 1 for split /,/, $method;
}
}
my @classes = all_modules;
plan tests => scalar @classes;
foreach my $class (@classes)
{
SKIP: {
my($is_private_class) = map { 1 } grep { $class =~ $_->{regex} && $_->{all} } @private_classes;
skip "private class: $class", 1 if $is_private_class;
my %methods = map {; $_ => 1 } map { split /,/, $_->{method} } grep { $class =~ $_->{regex} } @private_classes;
$methods{$_} = 1 for keys %private_methods;
my $also_private = eval 'qr{^' . join('|', keys %methods ) . '$}';
pod_coverage_ok $class, { also_private => [$also_private] };
};
}
+15
View File
@@ -0,0 +1,15 @@
use strict;
use warnings;
use Test::More;
BEGIN {
plan skip_all => 'test requires Test::Pod::Spelling::CommonMistakes'
unless eval q{ use Test::Pod::Spelling::CommonMistakes; 1 };
};
use Test::Pod::Spelling::CommonMistakes;
use FindBin;
use File::Spec;
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
# FIXME test files in bin too.
all_pod_files_ok;
+39
View File
@@ -0,0 +1,39 @@
use strict;
use warnings;
use Test::More;
BEGIN {
plan skip_all => 'test requires Test::Spelling'
unless eval q{ use Test::Spelling; 1 };
plan skip_all => 'test requires YAML'
unless eval q{ use YAML; 1; };
};
use Test::Spelling;
use YAML qw( LoadFile );
use FindBin;
use File::Spec;
my $config_filename = File::Spec->catfile(
$FindBin::Bin, 'release.yml'
);
my $config;
$config = LoadFile($config_filename)
if -r $config_filename;
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
add_stopwords(@{ $config->{pod_spelling_system}->{stopwords} });
add_stopwords(<DATA>);
all_pod_files_spelling_ok;
__DATA__
Plicease
stdout
stdin
subref
loopback
username
os
Ollis
Mojolicious
plicease
+34
View File
@@ -0,0 +1,34 @@
---
pod_spelling_system:
# list of words that are spelled correctly
# (regardless of what spell check thinks)
stopwords:
- Bethke
- Cosimo
- Crowther
- Holm
- Htbaa
- Kitover
- Magnus
- Mojo
- Ramberg
- Streppone
- Vuets
- dir
- giftnuss
- mojo
- namespace
- renderer
- spleenjack
- vti
- app's
- renderer's
- Toolkit's
- Fayland
pod_coverage:
# format is "Class#method" or "Class", regex allowed
# for either Class or method.
private:
- Mojolicious::Plugin::TtRenderer#register
- Mojolicious::Plugin::TtRenderer::Engine#tt
+15
View File
@@ -0,0 +1,15 @@
use strict;
use warnings;
use Test::More;
BEGIN {
plan skip_all => 'test requires Test::Strict'
unless eval q{ use Test::Strict; 1 };
};
use Test::Strict;
use FindBin;
use File::Spec;
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
all_perl_files_ok( grep { -e $_ } qw( bin lib t Makefile.PL ));