#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
    Jinja2 Debug Interface
    ~~~~~~~~~~~~~~~~~~~~~~

    Helper script for internal Jinja2 debugging.  Requires Werkzeug.

    :copyright: Copyright 2008 by Armin Ronacher.
    :license: BSD.
"""
import sys
import jinja2
from werkzeug import script

env = jinja2.Environment(extensions=['jinja2.ext.i18n', 'jinja2.ext.do'])

def shell_init_func():
    def _compile(x):
        print env.compile(x, raw=True)
    result = {
        'e':        env,
        'c':        _compile,
        't':        env.from_string,
        'p':        env.parse
    }
    for key in jinja2.__all__:
        result[key] = getattr(jinja2, key)
    return result


def action_compile():
    print env.compile(sys.stdin.read(), raw=True)

action_shell = script.make_shell(shell_init_func)


if __name__ == '__main__':
    script.run()
