View on
MetaCPAN is shutting down
For details read Perl NOC. After June 25th this page will redirect to
Marc - Sebastian Lucksch > Dotiac-addon-html_template-0.4 > Dotiac::DTL::Addon::html_template::Convert



Annotate this POD

View/Report Bugs
Module Version: 0.4   Source  


Dotiac::DTL::Addon::html_template::Convert - Convert HTML::Template to Dotiac::DTL


        #!/usr/bin/perl -w
        use Dotiac::DTL::Addon::html_template::Convert;

        # open the html template
        my $template = HTML::Template->new(filename => 'test.tmpl');

        # fill in some parameters
        $template->param(HOME => $ENV{HOME});
        $template->param(PATH => $ENV{PATH});

        # send the obligatory Content-Type and print the template output
        print "Content-Type: text/html\n\n", $template->output;


Converts HTML::Template templates to Dotiac::DTL templates.

Just replace

        use HTML::Template;

with use Dotiac::DTL::Addon::html_template::Convert;


        use Dotiac::DTL::Addon::html_template::Convert qw/combine/;     

in the script that calls that template.

Dotiac::DTL::Addon::html_template::Convert will then convert the template into Dotiac::DTL/Django template code and render it.

If the input is a filename, it will also save the converted versions under "FILENAME"+[+/-]+4 chars+".html" and won't reconvert as long as that file is there and not outdated.

When using mostly scalarrefs as data, "use Dotiac::DTL::Addon::html_template::Replace" is a better choice and faster.

The 4 chars save the options of the HTML::Template, cause different options of HTML::Template result in different compiled template.

The 4 Bytes in the new name:

First: g or n

"g" stands for global_vars on, "n" for off.

Second: i or s

"i" stands for case_insensitive, "c" for case_sensitive

Third: l or c

"l" stands for "loop_context_var" on, "c" for clear loop ("loop_context_var" off)

Last: j, h, u, o

Save the default escape status:

"j" for "JS", "h" for "HTML", "u" for "URL", o for "off"

For example: On all options to default, the flag will be "nico", all options on it will be "gslh"


When set "combine" in the use statement, this module will allow combined Django and HTML::Template code:

Valid template:

        {% if test or failed %}<TMPL_VAR test>{% endif %}

This is done by first converting HTML::Template code into Django template code and then parsing the whole thing again.

        {% if test or failed %}{{ test }}{% endif %}

The flags will be added with a leading "+" instead of a "-".

What won't work

Some options are accepted (global_vars,filter,loop_context_vars,associate,case_sensitive) the others are ignored (caching).

Sadly, the params() call without arguments and query() won't work at all prior to Dotiac::DTL 0.8, since Dotiac::DTL doesn't really care for variables until it renders.


There is one additional option to new():


Instructs Dotiac::DTL to compile the template, only works with filenames

        my $t=HTML::Template->new(filename=>"foo.html",compile=>1);

This will first translate to "foo.html[FLAGS].html" and then on the next run compile to "foo.html[FLAGS]"


Please report any bugs or feature requests to


Dotiac::DTL, Dotiac::DTL::Addon,,


Marc-Sebastian Lucksch

syntax highlighting: