config/sublime/Packages/Groovy/Groovy.tmLanguage
2012-08-01 21:04:05 -07:00

1356 lines
31 KiB
Text

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>groovy</string>
<string>gvy</string>
</array>
<key>foldingStartMarker</key>
<string>(\{\s*$|^\s*// \{\{\{)</string>
<key>foldingStopMarker</key>
<string>^\s*(\}|// \}\}\}$)</string>
<key>keyEquivalent</key>
<string>^~G</string>
<key>name</key>
<string>Groovy</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.groovy</string>
</dict>
</dict>
<key>match</key>
<string>^(#!).+$\n</string>
<key>name</key>
<string>comment.line.hashbang.groovy</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.package.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.package.groovy</string>
</dict>
</dict>
<key>match</key>
<string>^\s*(package)\s+([^ ;]+)</string>
<key>name</key>
<string>meta.package.groovy</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.import.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.import.groovy</string>
</dict>
</dict>
<key>match</key>
<string>^\s*(import)\s+([^ ;$]+);?</string>
<key>name</key>
<string>meta.import.groovy</string>
</dict>
<dict>
<key>include</key>
<string>#groovy</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>class-object</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?x)
\b(
(?:[a-z]\w*\.)* # Optional package specification
[A-Z]\w+\b # Class name
(?:&lt;(?:[\w, ]*)&gt;)? # Optional Generics
(?:\[\s*\])* # Optional brackets (array)
)\b
</string>
<key>name</key>
<string>storage.type.class.groovy</string>
</dict>
</array>
</dict>
<key>classes</key>
<dict>
<key>begin</key>
<string>(?x)^\s*
(?:(?:\b(?:(public|private|protected)|(static)|(final)|(native|synchronized|abstract|threadsafe|transient))\b\s*)*) # modifier
(class)\s+
(\w+)\s* # identifier</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.access-control.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.static.groovy</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.modifier.final.groovy</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.modifier.other.groovy</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>storage.type.class.groovy</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>entity.name.type.class.groovy</string>
</dict>
</dict>
<key>end</key>
<string>$</string>
<key>name</key>
<string>meta.definition.class.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.extends.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.other.inherited-class.groovy</string>
</dict>
</dict>
<key>match</key>
<string>(extends)\s+([a-zA-Z0-9_\.]+(?:&lt;(?:[a-zA-Z0-9_, ])+&gt;)?)\s*</string>
<key>name</key>
<string>meta.definition.class.inherited.classes.groovy</string>
</dict>
<dict>
<key>begin</key>
<string>(implements)\s</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.implements.groovy</string>
</dict>
</dict>
<key>end</key>
<string>(?=\s*extends|$|\{)</string>
<key>name</key>
<string>meta.definition.class.implemented.interfaces.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.other.inherited-class.interface.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.implemented.interfaces.separator.groovy</string>
</dict>
</dict>
<key>match</key>
<string>((?:[a-z]\w*.)*[A-Z]\w*)\s*(?:(,)|$|\{)</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>comment-block</key>
<dict>
<key>begin</key>
<string>/\*</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.groovy</string>
</dict>
</dict>
<key>end</key>
<string>\*/</string>
<key>name</key>
<string>comment.block.groovy</string>
</dict>
<key>comments</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.groovy</string>
</dict>
</dict>
<key>match</key>
<string>/\*\*/</string>
<key>name</key>
<string>comment.block.empty.groovy</string>
</dict>
<dict>
<key>include</key>
<string>text.html.javadoc</string>
</dict>
<dict>
<key>include</key>
<string>#comment-block</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.groovy</string>
</dict>
</dict>
<key>match</key>
<string>(//).*$\n?</string>
<key>name</key>
<string>comment.line.double-slash.groovy</string>
</dict>
</array>
</dict>
<key>constants</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b([A-Z][A-Z0-9_]+)\b</string>
<key>name</key>
<string>constant.other.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\b(true|false|null)\b</string>
<key>name</key>
<string>constant.language.groovy</string>
</dict>
</array>
</dict>
<key>groovy</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#classes</string>
</dict>
<dict>
<key>include</key>
<string>#methods</string>
</dict>
<dict>
<key>include</key>
<string>#groovy-code</string>
</dict>
</array>
</dict>
<key>groovy-code</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#groovy-code-minus-map-keys</string>
</dict>
<dict>
<key>include</key>
<string>#map-keys</string>
</dict>
</array>
</dict>
<key>groovy-code-minus-map-keys</key>
<dict>
<key>comment</key>
<string>In some situations, maps can't be declared without enclosing []'s,
therefore we create a collection of everything but that</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>include</key>
<string>#support-functions</string>
</dict>
<dict>
<key>include</key>
<string>#keyword-language</string>
</dict>
<dict>
<key>include</key>
<string>#values</string>
</dict>
<dict>
<key>include</key>
<string>#keyword-operator</string>
</dict>
<dict>
<key>include</key>
<string>#storage-types</string>
</dict>
<dict>
<key>include</key>
<string>#storage-modifiers</string>
</dict>
</array>
</dict>
<key>keyword</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#keyword-operator</string>
</dict>
<dict>
<key>include</key>
<string>#keyword-language</string>
</dict>
</array>
</dict>
<key>keyword-language</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(try|catch|finally|throw)\b</string>
<key>name</key>
<string>keyword.control.exception.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\b(return|break|continue|default|do|while|for|switch|if|else)\b</string>
<key>name</key>
<string>keyword.control.groovy</string>
</dict>
<dict>
<key>begin</key>
<string>\bcase\b</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.control.groovy</string>
</dict>
</dict>
<key>end</key>
<string>:</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.case-terminator.groovy</string>
</dict>
</dict>
<key>name</key>
<string>meta.case.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#groovy-code-minus-map-keys</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\b(new)\b</string>
<key>name</key>
<string>keyword.other.new.groovy</string>
</dict>
<dict>
<key>begin</key>
<string>\b(assert)\s</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.assert.groovy</string>
</dict>
</dict>
<key>end</key>
<string>$</string>
<key>name</key>
<string>meta.declaration.assertion.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>:</string>
<key>name</key>
<string>keyword.operator.assert.expression-seperator.groovy</string>
</dict>
<dict>
<key>include</key>
<string>#groovy-code-minus-map-keys</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\b(throws)\b</string>
<key>name</key>
<string>keyword.other.throws.groovy</string>
</dict>
</array>
</dict>
<key>keyword-operator</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(as)\b</string>
<key>name</key>
<string>keyword.operator.as.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\b(is)\b</string>
<key>name</key>
<string>keyword.operator.is.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\?\:</string>
<key>name</key>
<string>keyword.operator.elvis.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\.\.</string>
<key>name</key>
<string>keyword.operator.range.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\-&gt;</string>
<key>name</key>
<string>keyword.operator.arrow.groovy</string>
</dict>
<dict>
<key>match</key>
<string>&lt;&lt;</string>
<key>name</key>
<string>keyword.operator.leftshift.groovy</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;=\S)\.(?=\S)</string>
<key>name</key>
<string>keyword.operator.navigation.groovy</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;=\S)\?\.(?=\S)</string>
<key>name</key>
<string>keyword.operator.safe-navigation.groovy</string>
</dict>
<dict>
<key>begin</key>
<string>\?</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.ternary.groovy</string>
</dict>
</dict>
<key>end</key>
<string>$</string>
<key>name</key>
<string>meta.evaluation.ternary.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>:</string>
<key>name</key>
<string>keyword.operator.ternary.expression-seperator.groovy</string>
</dict>
<dict>
<key>include</key>
<string>#groovy-code-minus-map-keys</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>==~</string>
<key>name</key>
<string>keyword.operator.match.groovy</string>
</dict>
<dict>
<key>match</key>
<string>=~</string>
<key>name</key>
<string>keyword.operator.find.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\b(instanceof)\b</string>
<key>name</key>
<string>keyword.operator.instanceof.groovy</string>
</dict>
<dict>
<key>match</key>
<string>(===|==|!=|&lt;=|&gt;=|&lt;=&gt;|&lt;&gt;|&lt;|&gt;|&lt;&lt;)</string>
<key>name</key>
<string>keyword.operator.comparison.groovy</string>
</dict>
<dict>
<key>match</key>
<string>=</string>
<key>name</key>
<string>keyword.operator.assignment.groovy</string>
</dict>
<dict>
<key>match</key>
<string>(\-\-|\+\+)</string>
<key>name</key>
<string>keyword.operator.increment-decrement.groovy</string>
</dict>
<dict>
<key>match</key>
<string>(\-|\+|\*|\/|%)</string>
<key>name</key>
<string>keyword.operator.arithmetic.groovy</string>
</dict>
<dict>
<key>match</key>
<string>(!|&amp;&amp;|\|\|)</string>
<key>name</key>
<string>keyword.operator.logical.groovy</string>
</dict>
</array>
</dict>
<key>map-keys</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.other.key.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.seperator.key-value.groovy</string>
</dict>
</dict>
<key>match</key>
<string>(\w+)\s*(:)</string>
</dict>
</array>
</dict>
<key>method-call</key>
<dict>
<key>begin</key>
<string>(\w+)(\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.method.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.method-parameters.begin.groovy</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.method-parameters.end.groovy</string>
</dict>
</dict>
<key>name</key>
<string>meta.method-call.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>,</string>
<key>name</key>
<string>punctuation.definition.seperator.parameter.groovy</string>
</dict>
<dict>
<key>include</key>
<string>#groovy-code</string>
</dict>
</array>
</dict>
<key>method-declaration-remainder</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\(</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.begin.groovy</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.definition.method.parameters.groovy</string>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.end.groovy</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.parameter.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.parameter.groovy</string>
</dict>
</dict>
<key>match</key>
<string>(?x)\s*
(
(?:boolean|byte|char|short|int|float|long|double|(?:\w+\.)*[A-Z]\w*\b(?:&lt;(?:[\w, ]*)&gt;)?(?:\[\s*\])*)
)?
\s*
([a-z_][A-Za-z0-9_]*) # variable
</string>
<key>name</key>
<string>meta.definition.method.parameter.groovy</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.parameter.groovy</string>
</dict>
</dict>
<key>match</key>
<string>(boolean|byte|char|short|int|float|long|double|(?:\w+\.)*[A-Z]\w*\b(?:&lt;(?:[\w, ]*)&gt;)?(?:\[\s*\])*)</string>
<key>name</key>
<string>meta.definition.method.parameter.groovy</string>
</dict>
<dict>
<key>match</key>
<string>,</string>
<key>name</key>
<string>punctuation.definition.parameters.seperator.groovy</string>
</dict>
<dict>
<key>include</key>
<string>#comment-block</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\))\s*(throws)\s</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.throws.groovy</string>
</dict>
</dict>
<key>end</key>
<string>(?=$|\{)</string>
<key>name</key>
<string>meta.definition.method.throwables.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.throwable.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.throwables.seperator.groovy</string>
</dict>
</dict>
<key>match</key>
<string>((?:[a-z]\w*.)*[A-Z]\w*)\s*(?:(,)|$|\{)</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>methods</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x)^\s*
(?: # zero or more modifiers
(?:
(public|private|protected)|(final)|(native|synchronized|abstract|threadsafe|transient)
)
\s+
)?
\s*
([A-Z](?:[a-zA-Z0-9_])+) # constructor/class name
\s*
(?=\()
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.access-control.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.final.groovy</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.modifier.other.groovy</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.name.function.constructor.groovy</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.begin.groovy</string>
</dict>
</dict>
<key>end</key>
<string>{|$\n?</string>
<key>name</key>
<string>meta.definition.constructor.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#method-declaration-remainder</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?x)^\s*
(?:
(?: # or modifier and optional type
(?:(?:\b(public|private|protected)|(static)|(final)|(native|synchronized|abstract|threadsafe|transient))\b\s+)+\s* # modifier
(?:\b
(void)
|
(boolean|byte|char|short|int|float|long|double) # primitive
|
( # or class type
(?:\w+\.)*[A-Z]\w+\b # Class name
(?:&lt;(?:[\w, ]*)&gt;)? # optional Generic type
(?:\[\s*\])* # zero or more square brackets (array)
)
)?
)
|
(?:\b # or type by itself
(def)
|
(void)
|
(boolean|byte|char|short|int|float|long|double) # primitive
|
( # or class type
(?:\w+\.)*[A-Z]\w+\b # Class name
(?:&lt;(?:[\w, ]*)&gt;)? # optional generics info
(?:\[\s*\])* # zero or more square brackets (array)
)
)
)
\s*
(\w+) # method name
\s*
(?=\() # opening parens
</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.access-control.groovy</string>
</dict>
<key>10</key>
<dict>
<key>name</key>
<string>storage.type.return-type.primitive.groovy</string>
</dict>
<key>11</key>
<dict>
<key>name</key>
<string>storage.type.return-type.class.groovy</string>
</dict>
<key>12</key>
<dict>
<key>name</key>
<string>entity.name.function.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.modifier.static.groovy</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.modifier.final.groovy</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.modifier.other.groovy</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>storage.type.return-type.void.groovy</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>storage.type.return-type.primitive.groovy</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>storage.type.return-type.class.groovy</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>storage.type.return-type.def.groovy</string>
</dict>
<key>9</key>
<dict>
<key>name</key>
<string>storage.type.return-type.void.groovy</string>
</dict>
</dict>
<key>end</key>
<string>{|$\n?</string>
<key>name</key>
<string>meta.definition.method.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#method-declaration-remainder</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>nest_curly</key>
<dict>
<key>begin</key>
<string>\{</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.scope.groovy</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#nest_curly</string>
</dict>
</array>
</dict>
<key>numbers</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>((0(x|X)[0-9a-fA-F]*)|(\+|-)?\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\b</string>
<key>name</key>
<string>constant.numeric.groovy</string>
</dict>
</array>
</dict>
<key>regexp</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>/(?=[^/]+/)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.regexp.begin.groovy</string>
</dict>
</dict>
<key>end</key>
<string>/</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.regexp.end.groovy</string>
</dict>
</dict>
<key>name</key>
<string>string.regexp.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.groovy</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>storage-modifiers</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(private|protected|public)\b</string>
<key>name</key>
<string>storage.modifier.access-control.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\b(static)\b</string>
<key>name</key>
<string>storage.modifier.static.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\b(final)\b</string>
<key>name</key>
<string>storage.modifier.final.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\b(native|synchronized|abstract|threadsafe|transient)\b</string>
<key>name</key>
<string>storage.modifier.other.groovy</string>
</dict>
</array>
</dict>
<key>storage-types</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(@[^ (]+)(\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.annotation.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.annotation-arguments.begin.groovy</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.annotation-arguments.end.groovy</string>
</dict>
</dict>
<key>name</key>
<string>meta.declaration.annotation.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.other.key.groovy</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.groovy</string>
</dict>
</dict>
<key>match</key>
<string>(\w*)\s*(=)</string>
</dict>
<dict>
<key>include</key>
<string>#values</string>
</dict>
<dict>
<key>match</key>
<string>,</string>
<key>name</key>
<string>punctuation.definition.seperator.groovy</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>@\S+</string>
<key>name</key>
<string>storage.type.annotation.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\b(def)\b</string>
<key>name</key>
<string>storage.type.def.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\b(boolean|byte|char|short|int|float|long|double)(?:\[\s*\])*\b</string>
<key>name</key>
<string>storage.type.primitive.groovy</string>
</dict>
</array>
</dict>
<key>string-quoted-double</key>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.groovy</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.groovy</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.groovy</string>
</dict>
<dict>
<key>match</key>
<string>\$\w+</string>
<key>name</key>
<string>variable.other.interpolated.groovy</string>
</dict>
<dict>
<key>begin</key>
<string>\$\{</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.embedded.groovy</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>name</key>
<string>source.groovy.embedded.source</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#nest_curly</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>string-quoted-single</key>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.groovy</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.groovy</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.groovy</string>
</dict>
</array>
</dict>
<key>strings</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string-quoted-double</string>
</dict>
<dict>
<key>include</key>
<string>#string-quoted-single</string>
</dict>
<dict>
<key>include</key>
<string>#regexp</string>
</dict>
</array>
</dict>
<key>structures</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.structure.begin.groovy</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.structure.end.groovy</string>
</dict>
</dict>
<key>name</key>
<string>meta.structure.groovy</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#groovy-code</string>
</dict>
<dict>
<key>match</key>
<string>,</string>
<key>name</key>
<string>punctuation.definition.separator.groovy</string>
</dict>
</array>
</dict>
<key>support-functions</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?x)\b(?:sprintf|print(?:f|ln)?)\b</string>
<key>name</key>
<string>support.function.print.groovy</string>
</dict>
<dict>
<key>match</key>
<string>(?x)\b(?:shouldFail|fail(?:NotEquals)?|ass(?:ume|ert(?:S(?:cript|ame)|N(?:ot(?:Same|
Null)|ull)|Contains|T(?:hat|oString|rue)|Inspect|Equals|False|Length|
ArrayEquals)))\b</string>
<key>name</key>
<string>support.function.testing.groovy</string>
</dict>
<dict>
<key>match</key>
<string>(?x)\b(?:sleep|inspect|dump|use|with)\b</string>
<key>name</key>
<string>support.function.other.groovy</string>
</dict>
</array>
</dict>
<key>values</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
<dict>
<key>include</key>
<string>#strings</string>
</dict>
<dict>
<key>include</key>
<string>#numbers</string>
</dict>
<dict>
<key>include</key>
<string>#constants</string>
</dict>
<dict>
<key>include</key>
<string>#class-object</string>
</dict>
<dict>
<key>include</key>
<string>#structures</string>
</dict>
<dict>
<key>include</key>
<string>#method-call</string>
</dict>
</array>
</dict>
<key>variables</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(this|super)\b</string>
<key>name</key>
<string>variable.language.groovy</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.groovy</string>
<key>uuid</key>
<string>B3A64888-EBBB-4436-8D9E-F1169C5D7613</string>
</dict>
</plist>