Skip to content

Instantly share code, notes, and snippets.

@chrisgeo
Created September 13, 2012 22:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrisgeo/3718188 to your computer and use it in GitHub Desktop.
Save chrisgeo/3718188 to your computer and use it in GitHub Desktop.
jinja2 textmate
<?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>fileTypes</key>
<array>
<string>htm.j2</string>
<string>html.j2</string>
<string>xhtml.j2</string>
<string>xml.j2</string>
</array>
<key>firstLineMatch</key>
<string>^{% extends ["'][^"']+["'] %}</string>
<key>foldingStartMarker</key>
<string>(&lt;(?i:(head|table|tr|div|style|script|ul|ol|form|dl))\b.*?&gt;|{%\s*(block|filter|for|if|macro|raw))</string>
<key>foldingStopMarker</key>
<string>(&lt;/(?i:(head|table|tr|div|style|script|ul|ol|form|dl))\b.*?&gt;|{%\s*(endblock|endfilter|endfor|endif|endmacro|endraw)\s*%})</string>
<key>name</key>
<string>HTML (Jinja2)</string>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>meta.scope.jinja2.variable.nested.html</string>
<key>match</key>
<string>(?&lt;=\{\{)\s*[A-Za-z0-9_\.]+\s*(?=\}\})</string>
</dict>
<dict>
<key>include</key>
<string>source.jinja2</string>
</dict>
<dict>
<key>include</key>
<string>text.html.basic</string>
</dict>
</array>
<key>scopeName</key>
<string>text.html.jinja2</string>
<key>uuid</key>
<string>488399C0-5D29-4704-BE85-E03A461C34E7</string>
</dict>
</plist>
<?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>fileTypes</key>
<array>
<string>j2</string>
</array>
<key>foldingStartMarker</key>
<string>({%\s*(block|filter|for|if|macro|raw))</string>
<key>foldingStopMarker</key>
<string>({%\s*(endblock|endfilter|endfor|endif|endmacro|endraw)\s*%})</string>
<key>name</key>
<string>Jinja2</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>({%)\s*(raw)\s*(%})</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.other.jinja2.delimiter.tag</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.control.jinja2</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.other.jinja2.delimiter.tag</string>
</dict>
</dict>
<key>end</key>
<string>({%)\s*(endraw)\s*(%})</string>
<key>name</key>
<string>comment.block.jinja2.raw</string>
</dict>
<!--<dict>
<key>begin</key>
<string>[\"\']{{-?</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>entity.other.jinja2.delimiter.variable.between.html</string>
</dict>
</dict>
<key>end</key>
<string>-?}}.*</string>
<key>name</key>
<string>meta.scope.jinja2.variable.between.html</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>-->
<dict>
<key>begin</key>
<string>{#-?</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>entity.other.jinja2.delimiter.comment</string>
</dict>
</dict>
<key>end</key>
<string>-?#}</string>
<key>name</key>
<string>comment.block.jinja2</string>
</dict>
<dict>
<key>begin</key>
<string>{{-?</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>entity.other.jinja2.delimiter.variable</string>
</dict>
</dict>
<key>end</key>
<string>-?}}</string>
<key>name</key>
<string>meta.scope.jinja2.variable</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>{%-?</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>entity.other.jinja2.delimiter.tag</string>
</dict>
</dict>
<key>end</key>
<string>-?%}</string>
<key>name</key>
<string>meta.scope.jinja2.tag</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
</array>
<key>repository</key>
<dict>
<key>escaped_char</key>
<dict>
<key>match</key>
<string>\\x[0-9A-F]{2}</string>
<key>name</key>
<string>constant.character.escape.hex.jinja2</string>
</dict>
<key>escaped_unicode_char</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.unicode.16-bit-hex.jinja2</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.character.escape.unicode.32-bit-hex.jinja2</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.escape.unicode.name.jinja2</string>
</dict>
</dict>
<key>match</key>
<string>(\\U[0-9A-Fa-f]{8})|(\\u[0-9A-Fa-f]{4})|(\\N\{[a-zA-Z ]+\})</string>
</dict>
<key>expression</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.jinja2</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.jinja2.block</string>
</dict>
</dict>
<key>match</key>
<string>\s*\b(block)\s+([a-zA-Z_][a-zA-Z0-9_]*)\b</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.jinja2</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.jinja2.filter</string>
</dict>
</dict>
<key>match</key>
<string>\s*\b(filter)\s+([a-zA-Z_][a-zA-Z0-9_]*)\b</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.jinja2</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.jinja2.test</string>
</dict>
</dict>
<key>match</key>
<string>\s*\b(is)\s+([a-zA-Z_][a-zA-Z0-9_]*)\b</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.jinja2</string>
</dict>
</dict>
<key>match</key>
<string>(?&lt;=\{\%-|\{\%)\s*\b([a-zA-Z_][a-zA-Z0-9_]*)\b(?!\s*[,=])</string>
</dict>
<dict>
<key>match</key>
<string>\b(and|else|if|in|import|not|or|recursive|with(out)?\s+context)\b</string>
<key>name</key>
<string>keyword.control.jinja2</string>
</dict>
<dict>
<key>match</key>
<string>\b(true|false|none)\b</string>
<key>name</key>
<string>constant.language.jinja2</string>
</dict>
<dict>
<key>match</key>
<string>\b(loop|super|self|varargs|kwargs)\b</string>
<key>name</key>
<string>variable.language.jinja2</string>
</dict>
<dict>
<key>match</key>
<string>[a-zA-Z_][a-zA-Z0-9_]*</string>
<key>name</key>
<string>variable.other.jinja2</string>
</dict>
<dict>
<key>match</key>
<string>(\+|\-|\*\*|\*|//|/|%)</string>
<key>name</key>
<string>keyword.operator.arithmetic.jinja2</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.other.jinja2</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.jinja2.filter</string>
</dict>
</dict>
<key>match</key>
<string>(\|)([a-zA-Z_][a-zA-Z0-9_]*)</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.other.jinja2</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.jinja2.attribute</string>
</dict>
</dict>
<key>match</key>
<string>(\.)([a-zA-Z_][a-zA-Z0-9_]*)</string>
</dict>
<dict>
<key>begin</key>
<string>\[</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.other.jinja2</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\(</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.other.jinja2</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\{</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.other.jinja2</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#expression</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>(\.|:|\||,)</string>
<key>name</key>
<string>punctuation.other.jinja2</string>
</dict>
<dict>
<key>match</key>
<string>(==|&lt;=|=&gt;|&lt;|&gt;|!=)</string>
<key>name</key>
<string>keyword.operator.comparison.jinja2</string>
</dict>
<dict>
<key>match</key>
<string>=</string>
<key>name</key>
<string>keyword.operator.assignment.jinja2</string>
</dict>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.jinja2</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.jinja2</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.jinja2</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.jinja2</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.jinja2</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.jinja2</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>@/</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.regexp.begin.jinja2</string>
</dict>
</dict>
<key>end</key>
<string>/</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.regexp.end.jinja2</string>
</dict>
</dict>
<key>name</key>
<string>string.regexp.jinja2</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#simple_escapes</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>simple_escapes</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.newline.jinja2</string>
</dict>
<key>10</key>
<dict>
<key>name</key>
<string>constant.character.escape.tab.jinja2</string>
</dict>
<key>11</key>
<dict>
<key>name</key>
<string>constant.character.escape.vertical-tab.jinja2</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.character.escape.backlash.jinja2</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.escape.double-quote.jinja2</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>constant.character.escape.single-quote.jinja2</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>constant.character.escape.bell.jinja2</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>constant.character.escape.backspace.jinja2</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>constant.character.escape.formfeed.jinja2</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>constant.character.escape.linefeed.jinja2</string>
</dict>
<key>9</key>
<dict>
<key>name</key>
<string>constant.character.escape.return.jinja2</string>
</dict>
</dict>
<key>match</key>
<string>(\\\n)|(\\\\)|(\\\")|(\\')|(\\a)|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)|(\\v)</string>
</dict>
<key>string</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#simple_escapes</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.jinja2</string>
<key>uuid</key>
<string>CB0F3F8E-6062-4610-85B3-8905C61AD85A</string>
</dict>
</plist>
<input type="hidden" name="foo" value="{{foo}}" />
<input type="hidden" name="foo" value="{{ foo }}" />
<input type="hidden" name="foo" value="{{foo)}}" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment