# NAME Dancer::Template::Caribou - Template::Caribou wrapper for Dancer # VERSION version 1.0.1 # SYNOPSIS ```perl # in 'config.yml' template: Caribou engines: Caribou: namespace: MyApp::View layout_namespace: MyApp::View::Layout default_template: inner_page default_layout_template: page # and then in the application get '/' => sub { ...; template 'main' => \%options; }; ``` # DESCRIPTION `Dancer::Template::Caribou` is an interface for the [Template::Caribou](https://metacpan.org/pod/Template::Caribou) template system. Be forewarned, both this module and `Template::Caribou` itself are alpha-quality software and are still subject to any changes. **Caveat Maxima Emptor**. ## Basic Usage At the base, if you do ```perl get '/' => sub { ... return template 'MyView', \%options; }; ``` the template name (here _MyView_) will be concatenated with the configured view namespace (which defaults to _Dancer::View_) to generate the Caribou class name. A Caribou object is created using `%options` as its arguments, and its default template (defaulting to `page`) is then rendered. In other words, the last line of the code above becomes equivalent to ``` return Dancer::View::MyView->new( %options )->page; ``` ### Layouts as roles Layouts, just like templates, are package names. They are expected to be roles that will be composed with the template class. # CONFIGURATION - default\_template The name of the entry template to use. In other words, with the configuration given in the SYNOPSIS, the dancer code ``` return template 'MyThing'; ``` is equivalent to ``` return MyApp::View::MyThing->page; ``` Defaults to `page`. - default\_layout\_template Entry template to use when a layout is provided. Defaults to `page`. - namespace The namespace under which the Caribou template classes are. defaults to `Dancer::View`. Template names can be prefixed with a plus sign if you want it to be used as an absolute namespace. ``` template 'Relative::View'; # -> Dancer::View::Relative::View template '+My::Absolute::View'; # -> My::Absolute::View ``` - layout\_namespace The namespace under which the Caribou layout roles are. defaults to the `::Layout` sub-namespace under the template namespace. Like template names, layout names can be prefixed with a plus sign for absolute namespaces; ```perl set layout => 'My::Relative'; # -> Dancer::View::Layour::My::Relative set layout => '+My::Absolute'; # -> My::Absolute ``` # AUTHOR Yanick Champoux [![endorse](http://api.coderwall.com/yanick/endorsecount.png)](http://coderwall.com/yanick) # COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Yanick Champoux. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.