function p(t){for(var e={},n=t.split(" "),r=0;r"))return i="->",null;if(/[+\-*&%=<>!?|\/~]/.test(n))return t.eatWhile(/[+\-*&%=<>|~]/),"operator";if(t.eatWhile(/[\w\$_]/),n=="@")return t.eatWhile(/[\w\$_\.]/),"meta";if(e.lastToken==".")return"property";if(t.eat(":"))return i="proplabel","property";var r=t.current();return z.propertyIsEnumerable(r)?"atom":g.propertyIsEnumerable(r)?(b.propertyIsEnumerable(r)?i="newstatement":w.propertyIsEnumerable(r)&&(i="standalone"),"keyword"):"variable"}k.isBase=!0;function d(t,e,n){var r=!1;if(t!="/"&&e.eat(t))if(e.eat(t))r=!0;else return"string";function a(o,c){for(var s=!1,u,h=!r;(u=o.next())!=null;){if(u==t&&!s){if(!r)break;if(o.match(t+t)){h=!0;break}}if(t=='"'&&u=="$"&&!s){if(o.eat("{"))return c.tokenize.push(x()),"string";if(o.match(/^\w/,!1))return c.tokenize.push(T),"string"}s=!s&&u=="\\"}return h&&c.tokenize.pop(),"string"}return n.tokenize.push(a),a(e,n)}function x(){var t=1;function e(n,r){if(n.peek()=="}"){if(t--,t==0)return r.tokenize.pop(),r.tokenize[r.tokenize.length-1](n,r)}else n.peek()=="{"&&t++;return k(n,r)}return e.isBase=!0,e}function T(t,e){var n=t.match(/^(\.|[\w\$_]+)/);return n?n[0]=="."?null:"variable":(e.tokenize.pop(),e.tokenize[e.tokenize.length-1](t,e))}function y(t,e){for(var n=!1,r;r=t.next();){if(r=="/"&&n){e.tokenize.pop();break}n=r=="*"}return"comment"}function m(t,e){return!t||t=="operator"||t=="->"||/[\.\[\{\(,;:]/.test(t)||t=="newstatement"||t=="keyword"||t=="proplabel"||t=="standalone"&&!e}function v(t,e,n,r,a){this.indented=t,this.column=e,this.type=n,this.align=r,this.prev=a}function f(t,e,n){return t.context=new v(t.indented,e,n,null,t.context)}function l(t){var e=t.context.type;return(e==")"||e=="]"||e=="}")&&(t.indented=t.context.indented),t.context=t.context.prev}const E={name:"groovy",startState:function(t){return{tokenize:[k],context:new v(-t,0,"top",!1),indented:0,startOfLine:!0,lastToken:null}},token:function(t,e){var n=e.context;if(t.sol()&&(n.align==null&&(n.align=!1),e.indented=t.indentation(),e.startOfLine=!0,n.type=="statement"&&!m(e.lastToken,!0)&&(l(e),n=e.context)),t.eatSpace())return null;i=null;var r=e.tokenize[e.tokenize.length-1](t,e);if(r=="comment")return r;if(n.align==null&&(n.align=!0),(i==";"||i==":")&&n.type=="statement")l(e);else if(i=="->"&&n.type=="statement"&&n.prev.type=="}")l(e),e.context.align=!1;else if(i=="{")f(e,t.column(),"}");else if(i=="[")f(e,t.column(),"]");else if(i=="(")f(e,t.column(),")");else if(i=="}"){for(;n.type=="statement";)n=l(e);for(n.type=="}"&&(n=l(e));n.type=="statement";)n=l(e)}else i==n.type?l(e):(n.type=="}"||n.type=="top"||n.type=="statement"&&i=="newstatement")&&f(e,t.column(),"statement");return e.startOfLine=!1,e.lastToken=i||r,r},indent:function(t,e,n){if(!t.tokenize[t.tokenize.length-1].isBase)return null;var r=e&&e.charAt(0),a=t.context;a.type=="statement"&&!m(t.lastToken,!0)&&(a=a.prev);var o=r==a.type;return a.type=="statement"?a.indented+(r=="{"?0:n.unit):a.align?a.column+(o?0:1):a.indented+(o?0:n.unit)},languageData:{indentOnInput:/^\s*[{}]$/,commentTokens:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""']}}};export{E as groovy};