jinjatag makes writing jinja2 extensions trivial. Decorate a function and get an extension.
Python Shell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
jinjatag
.gitignore
AUTHORS
CHANGELOG
LICENSE
MANIFEST.in
README.md
setup.py

README.md

A Library to Quickly Turn Functions into Jinja2 Extensions

This library is best demonstrated through example:

import jinjatag

### Configure your Jinja2 Environment:
jinja_tag = jinjatag.JinjaTag()
jinja2_env = Environment(extensions=[jinja_tag])
jinja_tag.init()

### Decorate your functions

@jinjatag.simple_tag()
def mytag(foo, bar=None, **kwargs):
    return "mytag: "+foo+(bar or '')+str(kwargs)

@jinjatag.simple_block()
def myblock(body, foo, bar=None):
    return "myblock : "+body+foo+(bar or '')

Then, in your template code, use your new tags:

{% mytag foo='abc' xyz='def' %}

{% myblock foo='bar' %}contents{% endmyblock %}

The resulting output:

mytag: abc{'xyz':'def'}

myblock: contentsbar

That's really all there is to it. A simple_tag is expected to accept 0 or more arguments and return a string. A simple_block is expected to accept at least one argument which will be its rendered body.

Install

The module is registered with pypi, so simply use:

easy_install jinjatag

or, if you're so inclined:

pip install jinjatag

Using with Flask

To use jinjatag with flask you have to configure it like this:

import jinjatag

app = Flask(__name__)

jinja_tag = jinjatag.JinjaTag()
# jinja_options is an ImmutableDict, so we have to do this song and dance
app.jinja_options = app.jinja_options.copy()
app.jinja_options['extensions'].append(jinja_tag)
jinja_tag.env = app.jinja_env
jinja_tag.init() 

Further Documentation

More documentation is available at http://mankyd.github.com/jinjatag/

Also, tests are available in https://github.com/mankyd/jinjatag/tree/master/jinjatag/tests

License

GPL v3

Authors

Dave Mankoff Mike Axiak