1(function(a){if(typeof exports=="object"&&typeof module=="object")a(require("../../lib/codemirror"));else if(typeof define=="function"&&define.amd)define(["../../lib/codemirror"],a);else a(CodeMirror)})(function(a){"use strict";a.defineMode("groovy",function(b){function c(a){var b={},c=a.split(" ");for(var d=0;d<c.length;++d)b[c[d]]=true;return b}var d=c("abstract as assert boolean break byte case catch char class const continue def default "+"do double else enum extends final finally float for goto if implements import in "+"instanceof int interface long native new package private protected public return "+"short static strictfp super switch synchronized threadsafe throw throws trait transient "+"try void volatile while");var e=c("catch class def do else enum finally for if interface switch trait try while");var f=c("return break continue");var g=c("null true false this");var h;function i(a,b){var c=a.next();if(c=='"'||c=="'"){return j(c,a,b)}if(/[\[\]{}\(\),;\:\.]/.test(c)){h=c;return null}if(/\d/.test(c)){a.eatWhile(/[\w\.]/);if(a.eat(/eE/)){a.eat(/\+\-/);a.eatWhile(/\d/)}return"number"}if(c=="/"){if(a.eat("*")){b.tokenize.push(l);return l(a,b)}if(a.eat("/")){a.skipToEnd();return"comment"}if(m(b.lastToken,false)){return j(c,a,b)}}if(c=="-"&&a.eat(">")){h="->";return null}if(/[+\-*&%=<>!?|\/~]/.test(c)){a.eatWhile(/[+\-*&%=<>|~]/);return"operator"}a.eatWhile(/[\w\$_]/);if(c=="@"){a.eatWhile(/[\w\$_\.]/);return"meta"}if(b.lastToken==".")return"property";if(a.eat(":")){h="proplabel";return"property"}var i=a.current();if(g.propertyIsEnumerable(i)){return"atom"}if(d.propertyIsEnumerable(i)){if(e.propertyIsEnumerable(i))h="newstatement";else if(f.propertyIsEnumerable(i))h="standalone";return"keyword"}return"variable"}i.isBase=true;function j(a,b,c){var d=false;if(a!="/"&&b.eat(a)){if(b.eat(a))d=true;else return"string"}function e(b,c){var e=false,f,g=!d;while((f=b.next())!=null){if(f==a&&!e){if(!d){break}if(b.match(a+a)){g=true;break}}if(a=='"'&&f=="$"&&!e&&b.eat("{")){c.tokenize.push(k());return"string"}e=!e&&f=="\\"}if(g)c.tokenize.pop();return"string"}c.tokenize.push(e);return e(b,c)}function k(){var a=1;function b(b,c){if(b.peek()=="}"){a--;if(a==0){c.tokenize.pop();return c.tokenize[c.tokenize.length-1](b,c)}}else if(b.peek()=="{"){a++}return i(b,c)}b.isBase=true;return b}function l(a,b){var c=false,d;while(d=a.next()){if(d=="/"&&c){b.tokenize.pop();break}c=d=="*"}return"comment"}function m(a,b){return!a||a=="operator"||a=="->"||/[\.\[\{\(,;:]/.test(a)||a=="newstatement"||a=="keyword"||a=="proplabel"||a=="standalone"&&!b}function n(a,b,c,d,e){this.indented=a;this.column=b;this.type=c;this.align=d;this.prev=e}function o(a,b,c){return a.context=new n(a.indented,b,c,null,a.context)}function p(a){var b=a.context.type;if(b==")"||b=="]"||b=="}")a.indented=a.context.indented;return a.context=a.context.prev}return{startState:function(a){return{tokenize:[i],context:new n((a||0)-b.indentUnit,0,"top",false),indented:0,startOfLine:true,lastToken:null}},token:function(a,b){var c=b.context;if(a.sol()){if(c.align==null)c.align=false;b.indented=a.indentation();b.startOfLine=true;if(c.type=="statement"&&!m(b.lastToken,true)){p(b);c=b.context}}if(a.eatSpace())return null;h=null;var d=b.tokenize[b.tokenize.length-1](a,b);if(d=="comment")return d;if(c.align==null)c.align=true;if((h==";"||h==":")&&c.type=="statement")p(b);else if(h=="->"&&c.type=="statement"&&c.prev.type=="}"){p(b);b.context.align=false}else if(h=="{")o(b,a.column(),"}");else if(h=="[")o(b,a.column(),"]");else if(h=="(")o(b,a.column(),")");else if(h=="}"){while(c.type=="statement")c=p(b);if(c.type=="}")c=p(b);while(c.type=="statement")c=p(b)}else if(h==c.type)p(b);else if(c.type=="}"||c.type=="top"||c.type=="statement"&&h=="newstatement")o(b,a.column(),"statement");b.startOfLine=false;b.lastToken=h||d;return d},indent:function(c,d){if(!c.tokenize[c.tokenize.length-1].isBase)return a.Pass;var e=d&&d.charAt(0),f=c.context;if(f.type=="statement"&&!m(c.lastToken,true))f=f.prev;var g=e==f.type;if(f.type=="statement")return f.indented+(e=="{"?0:b.indentUnit);else if(f.align)return f.column+(g?0:1);else return f.indented+(g?0:b.indentUnit)},electricChars:"{}",closeBrackets:{triples:"'\""},fold:"brace",blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//"}});a.defineMIME("text/x-groovy","groovy")});
2//# sourceMappingURL=groovy.min.js.map