openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

smalltalk.min.js (2365B)


      1 (function(e){if(typeof exports=="object"&&typeof module=="object")e(require("../../lib/codemirror"));else if(typeof define=="function"&&define.amd)define(["../../lib/codemirror"],e);else e(CodeMirror)})(function(e){"use strict";e.defineMode("smalltalk",function(e){var s=/[+\-\/\\*~<>=@%|&?!.,:;^]/,u=/true|false|nil|self|super|thisContext/,t=function(e,t){this.next=e;this.parent=t},n=function(e,t,n){this.name=e;this.context=t;this.eos=n},l=function(){this.context=new t(i,null);this.expectVariable=!0;this.indentation=0;this.userIndentationDelta=0};l.prototype.userIndent=function(t){this.userIndentationDelta=t>0?(t/e.indentUnit-this.indentation):0};var i=function(e,l,d){var i=new n(null,l,!1),c=e.next();if(c==="\""){i=a(e,new t(a,l))}
      2 else if(c==="'"){i=r(e,new t(r,l))}
      3 else if(c==="#"){if(e.peek()==="'"){e.next();i=o(e,new t(o,l))}
      4 else{if(e.eatWhile(/[^\s.{}\[\]()]/))i.name="string-2";else i.name="meta"}}
      5 else if(c==="$"){if(e.next()==="<"){e.eatWhile(/[^\s>]/);e.next()};i.name="string-2"}
      6 else if(c==="|"&&d.expectVariable){i.context=new t(f,l)}
      7 else if(/[\[\]{}()]/.test(c)){i.name="bracket";i.eos=/[\[{(]/.test(c);if(c==="["){d.indentation++}
      8 else if(c==="]"){d.indentation=Math.max(0,d.indentation-1)}}
      9 else if(s.test(c)){e.eatWhile(s);i.name="operator";i.eos=c!==";"}
     10 else if(/\d/.test(c)){e.eatWhile(/[\w\d]/);i.name="number"}
     11 else if(/[\w_]/.test(c)){e.eatWhile(/[\w\d_]/);i.name=d.expectVariable?(u.test(e.current())?"keyword":"variable"):null}
     12 else{i.eos=d.expectVariable};return i},a=function(e,t){e.eatWhile(/[^"]/);return new n("comment",e.eat("\"")?t.parent:t,!0)},r=function(e,t){e.eatWhile(/[^']/);return new n("string",e.eat("'")?t.parent:t,!1)},o=function(e,t){e.eatWhile(/[^']/);return new n("string-2",e.eat("'")?t.parent:t,!1)},f=function(e,t){var i=new n(null,t,!1),a=e.next();if(a==="|"){i.context=t.parent;i.eos=!0}
     13 else{e.eatWhile(/[^|]/);i.name="variable"};return i};return{startState:function(){return new l},token:function(e,t){t.userIndent(e.indentation());if(e.eatSpace()){return null};var n=t.context.next(e,t.context,t);t.context=n.context;t.expectVariable=n.eos;return n.name},blankLine:function(e){e.userIndent(0)},indent:function(t,n){var a=t.context.next===i&&n&&n.charAt(0)==="]"?-1:t.userIndentationDelta;return(t.indentation+a)*e.indentUnit},electricChars:"]"}});e.defineMIME("text/x-stsrc",{name:"smalltalk"})});