Jedi::Plugin::Template - Plugin for Template Toolkit
version 1.001
This is a Template::Toolkit plugin for Jedi web app framework.
Jedi is just a simple web app framework that help your create app above Plack.
This plugin handle your Template::Toolkit files for you.
It will use the Jedi config to get the directory of your templates. The default value is the dist_dir of your module.
The directory of your templates should look like :
* public * views * layouts
The public directory contain all your static files. It is generally your javascripts and css.
The views directory contain all your template toolkit files.
The views/layouts contain all your template toolkit layout files.
To use it in your Jedi app :
package MyApps; use Jedi::App; use Jedi::Plugin::Template; sub jedi_app { # ... $jedi->get('/bla', sub { my ($jedi, $request, $response) = @_; $response->body( $jedi->jedi_template('test.tt', {hello => 'world'}, 'main.tt'); ); return 1; }) } 1;
The views directory here, look like :
* views * test.tt * layouts * main.tt
The main.tt look like
<html> <body> This will wrap your content : [% content %] </body> </html>
And your test.tt :
<p>Hello [% hello %]</p>
By default Jedi::Plugin::Template will setup the 'template_dir' configuration to the dist_dir of your package :
MyApps: template_dir: DIST_DIR('MyApps')
You can create a config file to be able to do development in your working directory like this :
MyApps: template_dir: ./share/
In order to be able to deploy and use properly your app like any other perl packages, use the 'share' directory.
With Dist::Zilla it will be automatic if the "public" and "views" directory is placed under the "share" directory.
If you use Module::Build you need to defined :
my %module_build_args = ( # ... "share_dir" => { "dist" => "share" }, # ... );
You can defined a default layout, by setting the attribute : 'jedi_template_default_layout' $jedi_app->jedi_template_default_layout('main.tt');
The method 'jedi_template' will use Template to process your template.
$jedi_app->jedi_template($file, \%vars); $jedi_app->jedi_template($file, \%vars, $layout);
The layout use the jedi_template_default_layout by default.
You can also remove any layout, using the value "none".
$jedi_app->jedi_template($file, \%vars, 'none'),
The plugin will match all missing by sending a public file if this one exists. It handle cache and compression for you.
* public * mystyle.css curl http://localhost:3000/mystyle.css
If no route match the '/mystyle.css', then the plugin will check in the public dir and send the file if this one is present.
Please report any bugs or feature requests on the bugtracker website https://github.com/celogeek/perl-jedi-plugin-template/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
celogeek <me@celogeek.com>
This software is copyright (c) 2013 by celogeek <me@celogeek.com>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Jedi::Plugin::Template, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Jedi::Plugin::Template
CPAN shell
perl -MCPAN -e shell install Jedi::Plugin::Template
For more information on module installation, please visit the detailed CPAN module installation guide.