| <?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> |