Skip to content
Django templates for Erlang
Erlang Other
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin
ebin
examples/docroot
priv/custom_tags
src
.gitignore
Emakefile
Makefile
README.markdown
README_I18N

README.markdown

ErlyDTL

ErlyDTL implements most but not all of the Django Template Language.

Project homepage: http://code.google.com/p/erlydtl/

Compilation

To compile ErlyDTL, run

make

in this directory.

Template compilation

Four ways:

erlydtl:compile("/path/to/template.dtl", my_module_name)

erlydtl:compile("/path/to/template.dtl", my_module_name, Options)

erlydtl:compile(<<"<html>{{ foo }}</html>">>, my_module_name)

erlydtl:compile(<<"<html>{{ foo }}</html>">>, my_module_name, Options)

Options is a proplist possibly containing:

  • out_dir - Directory to store generated .beam files. If not specified, no .beam files will be created.

  • doc_root - Included template paths will be relative to this directory; defaults to the compiled template's directory.

  • custom_tags_dir - Directory of DTL files (no extension) includable as tags. E.g. if $custom_tags_dir/foo contains <b>{{ bar }}</b>, then {{ foo bar=100 }} will evaluate to <b>100</b>. Get it?

  • vars - Variables (and their values) to evaluate at compile-time rather than render-time.

  • reader - {module, function} tuple that takes a path to a template and returns a binary with the file contents. Defaults to {file, read_file}. Useful for reading templates from a network resource.

  • compiler_options - Proplist passed directly to compiler:forms/2

  • force_recompile - Recompile the module even if the source's checksum has not changed. Useful for debugging.

  • locale - The locale used for template compile. Requires erlang_gettext. It will ask gettext_server for the string value on the provided locale. For example, adding {locale, "en_US"} will call {key2str, Key, "en_US"} for all string marked as trans ({% trans "StringValue" %} on templates). See README_I18N.

Usage (of a compiled template)

my_compiled_template:render(Variables) -> {ok, IOList} | {error, Err}

Variables is a proplist, dict, gb_tree, or a parameterized module (whose method names correspond to variable names). The variable values can be atoms, strings, binaries, or (nested) variables.

IOList is the rendered template.

my_compiled_template:render(Variables, TranslationFun) -> 
        {ok, IOList} | {error, Err}

Same as render/1, but TranslationFun is a fun/1 that will be used to translate strings appearing inside {% trans %} tags. The simplest TranslationFun would be fun(Val) -> Val end

my_compiled_template:translatable_strings() -> [String]

List of strings appearing in {% trans %} tags that can be overridden with a dictionary passed to render/2.

my_compiled_template:source() -> {FileName, CheckSum}

Name and checksum of the original template file.

my_compiled_template:dependencies() -> [{FileName, CheckSum}]

List of names/checksums of templates included by the original template file. Useful for frameworks that recompile a template only when the template's dependencies change.

Tests

From a Unix shell, run:

make test

Note that the tests will create some output in examples/rendered_output.

Something went wrong with that request. Please try again.