| <?xml version="1.0" encoding="UTF-8"?> | 
 | <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | 
 | <plist version="1.0"> | 
 | <dict> | 
 | 	<key>beforeRunningCommand</key> | 
 | 	<string>nop</string> | 
 | 	<key>command</key> | 
 | 	<string>. "$TM_SUPPORT_PATH/lib/webpreview.sh" | 
 | html_header "Jinja Syntax Validation" "Jinja Templates" | 
 |  | 
 | export TMPFILE="$(mktemp -t tm_jinja_test__)" | 
 | cat /dev/stdin > $TMPFILE | 
 |  | 
 | python <<'END' | 
 | try: | 
 |     from jinja import Environment | 
 |     from jinja.exceptions import TemplateSyntaxError | 
 |     e = Environment() | 
 | except ImportError, e: | 
 |     print "<h2>Error</h2>" | 
 |     print "<p>Jinja is not installed on this system, cannot perform syntax check.</p>" | 
 | else: | 
 |     import sys, os | 
 |     from cgi import escape | 
 |  | 
 |     f = file(os.environ['TMPFILE']) | 
 |     try: | 
 |         source = f.read() | 
 |     finally: | 
 |         f.close() | 
 |     try: | 
 |         e.parse(source, os.environ['TM_FILEPATH']) | 
 |     except TemplateSyntaxError, err: | 
 |         print e.from_string(''' | 
 |           <h2>Syntax Error in Line {{ err.lineno or '?' }}</h2> | 
 |           <p>{{ err.message|e }}</p> | 
 |           <p><a href="txmt://open/?url=file://{{ err.filename|urlencode }}&line={{ err.lineno }}">Go To Line</a></p> | 
 |         ''').render(err=err) | 
 |     else: | 
 |         print '<h2>Success</h2>' | 
 |         print '<p>no syntax errors found!</p>' | 
 | END | 
 |  | 
 | html_footer | 
 | rm $TMPFILE</string> | 
 | 	<key>input</key> | 
 | 	<string>document</string> | 
 | 	<key>keyEquivalent</key> | 
 | 	<string>^V</string> | 
 | 	<key>name</key> | 
 | 	<string>Validate Syntax</string> | 
 | 	<key>output</key> | 
 | 	<string>showAsHTML</string> | 
 | 	<key>scope</key> | 
 | 	<string>source.jinja, text.html.jinja</string> | 
 | 	<key>uuid</key> | 
 | 	<string>07198D95-F344-47EB-B1F2-69F2DC10BA1F</string> | 
 | </dict> | 
 | </plist> |