Yanick Champoux

NAME

Dancer::Template::Caribou - Template::Caribou wrapper for Dancer

VERSION

version 1.0.1

SYNOPSIS

    # 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 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

    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;

    set layout => 'My::Relative';  # -> Dancer::View::Layour::My::Relative
    set layout => '+My::Absolute'; # -> My::Absolute

AUTHOR

Yanick Champoux <yanick@babyl.dyndns.org>

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.