Files
cdnjs/ajax/libs/codemirror/2.36.0/coffeescript.min.js
T
2013-04-14 11:51:00 +10:00

1 line
3.7 KiB
JavaScript

CodeMirror.defineMode("coffeescript",function(e){function t(e){return RegExp("^(("+e.join(")|(")+"))\\b")}function n(e,t){if(e.sol()){var n=t.scopes[0].offset;if(e.eatSpace()){var r=e.indentation();return r>n?"indent":n>r?"dedent":null}n>0&&o(e,t)}if(e.eatSpace())return null;var s=e.peek();if(e.match("####"))return e.skipToEnd(),"comment";if(e.match("###"))return t.tokenize=a,t.tokenize(e,t);if("#"===s)return e.skipToEnd(),"comment";if(e.match(/^-?[0-9\.]/,!1)){var b=!1;if(e.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)&&(b=!0),e.match(/^-?\d+\.\d*/)&&(b=!0),e.match(/^-?\.\d+/)&&(b=!0),b)return"."==e.peek()&&e.backUp(1),"number";var v=!1;if(e.match(/^-?0x[0-9a-f]+/i)&&(v=!0),e.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)&&(v=!0),e.match(/^-?0(?![\dx])/i)&&(v=!0),v)return"number"}if(e.match(_))return t.tokenize=i(e.current(),"string"),t.tokenize(e,t);if(e.match(k)){if("/"!=e.current()||e.match(/^.*\//,!1))return t.tokenize=i(e.current(),"string-2"),t.tokenize(e,t);e.backUp(1)}return e.match(m)||e.match(p)?"punctuation":e.match(d)||e.match(c)||e.match(f)?"operator":e.match(u)?"punctuation":e.match(E)?"atom":e.match(y)?"keyword":e.match(h)?"variable":e.match(g)?"property":(e.next(),l)}function i(t,i){var a=1==t.length;return function(r,o){for(;!r.eol();)if(r.eatWhile(/[^'"\/\\]/),r.eat("\\")){if(r.next(),a&&r.eol())return i}else{if(r.match(t))return o.tokenize=n,i;r.eat(/['"\/]/)}return a&&(e.mode.singleLineStringErrors?i=l:o.tokenize=n),i}}function a(e,t){for(;!e.eol();){if(e.eatWhile(/[^#]/),e.match("###")){t.tokenize=n;break}e.eatWhile("#")}return"comment"}function r(t,n,i){i=i||"coffee";var a=0;if("coffee"===i){for(var r=0;n.scopes.length>r;r++)if("coffee"===n.scopes[r].type){a=n.scopes[r].offset+e.indentUnit;break}}else a=t.column()+t.current().length;n.scopes.unshift({offset:a,type:i})}function o(e,t){if(1!=t.scopes.length){if("coffee"===t.scopes[0].type){for(var n=e.indentation(),i=-1,a=0;t.scopes.length>a;++a)if(n===t.scopes[a].offset){i=a;break}if(-1===i)return!0;for(;t.scopes[0].offset!==n;)t.scopes.shift();return!1}return t.scopes.shift(),!1}}function s(e,t){var n=t.tokenize(e,t),i=e.current();if("."===i)return n=t.tokenize(e,t),i=e.current(),"variable"===n?"variable":l;"return"===i&&(t.dedent+=1),("->"!==i&&"=>"!==i||t.lambda||"coffee"!=t.scopes[0].type||""!==e.peek())&&"indent"!==n||r(e,t);var a="[({".indexOf(i);return-1!==a&&r(e,t,"])}".slice(a,a+1)),b.exec(i)&&r(e,t),"then"==i&&o(e,t),"dedent"===n&&o(e,t)?l:(a="])}".indexOf(i),-1!==a&&o(e,t)?l:(t.dedent>0&&e.eol()&&"coffee"==t.scopes[0].type&&(t.scopes.length>1&&t.scopes.shift(),t.dedent-=1),n))}var l="error",c=RegExp("^[\\+\\-\\*/%&|\\^~<>!?]"),u=RegExp("^[\\(\\)\\[\\]\\{\\},:`=;\\.]"),d=RegExp("^((->)|(=>)|(\\+\\+)|(\\+\\=)|(\\-\\-)|(\\-\\=)|(\\*\\*)|(\\*\\=)|(\\/\\/)|(\\/\\=)|(==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//))"),p=RegExp("^((\\.\\.)|(\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"),m=RegExp("^((\\.\\.\\.)|(//=)|(>>=)|(<<=)|(\\*\\*=))"),h=RegExp("^[_A-Za-z$][_A-Za-z$0-9]*"),g=RegExp("^(@|this.)[_A-Za-z$][_A-Za-z$0-9]*"),f=t(["and","or","not","is","isnt","in","instanceof","typeof"]),b=["for","while","loop","if","unless","else","switch","try","catch","finally","class"],v=["break","by","continue","debugger","delete","do","in","of","new","return","then","this","throw","when","until"],y=t(b.concat(v));b=t(b);var _=RegExp("^('{3}|\"{3}|['\"])"),k=RegExp("^(/{3}|/)"),C=["Infinity","NaN","undefined","null","true","false","on","off","yes","no"],E=t(C),T={startState:function(e){return{tokenize:n,scopes:[{offset:e||0,type:"coffee"}],lastToken:null,lambda:!1,dedent:0}},token:function(e,t){var n=s(e,t);return t.lastToken={style:n,content:e.current()},e.eol()&&e.lambda&&(t.lambda=!1),n},indent:function(e){return e.tokenize!=n?0:e.scopes[0].offset}};return T}),CodeMirror.defineMIME("text/x-coffeescript","coffeescript");