blob: 109c5c6c213fe17b54686d866fbbdf053974752d [file] [log] [blame]
Armin Ronacher19863ef2007-03-02 07:07:57 +01001# -*- coding: utf-8 -*-
2"""
3 jdebug
4 ~~~~~~
5
6 Helper module to simplify jinja debugging. Use
7
8 :copyright: 2006 by Armin Ronacher.
9 :license: BSD, see LICENSE for more details.
10"""
Armin Ronachera6901462007-03-29 20:03:40 +020011import os
12import sys
Armin Ronacher19863ef2007-03-02 07:07:57 +010013from jinja import Environment
14from jinja.parser import Parser
Armin Ronacherb9c8ae12007-03-20 00:14:10 +010015from jinja.lexer import Lexer
Armin Ronacher19863ef2007-03-02 07:07:57 +010016from jinja.translators.python import PythonTranslator
17
18
Armin Ronacherb9c8ae12007-03-20 00:14:10 +010019__all__ = ['e', 't', 'p', 'l']
Armin Ronacher19863ef2007-03-02 07:07:57 +010020
21e = Environment()
22t = e.from_string
23
Armin Ronachera6901462007-03-29 20:03:40 +020024
25if os.environ.get('JDEBUG_SOURCEPRINT'):
26 original_translate = PythonTranslator.translate
27
28 def debug_translate(self):
29 rv = original_translate(self)
30 sys.stderr.write('## GENERATED SOURCE:\n%s\n' % rv)
31 return rv
32
33 PythonTranslator.translate = debug_translate
34
35
Armin Ronacher19863ef2007-03-02 07:07:57 +010036def p(x):
37 print PythonTranslator(e, Parser(e, x).parse()).translate()
Armin Ronacherb9c8ae12007-03-20 00:14:10 +010038
39def l(x):
40 for item in e.lexer.tokenize(x):
41 print '%5s %-20s %r' % item