openrat-cms

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

oz.min.js (3370B)


      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('oz',function(e){function n(e){return new RegExp('^(('+e.join(')|(')+'))\\b')};var c=/[\^@!\|<>#~\.\*\-\+\\/,=]/,f=/(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/,s=/(:::)|(\.\.\.)|(=<:)|(>=:)/,r=['in','then','else','of','elseof','elsecase','elseif','catch','finally','with','require','prepare','import','export','define','do'],i=['end'],l=n(['true','false','nil','unit']),d=n(['andthen','at','attr','declare','feat','from','lex','mod','div','mode','orelse','parser','prod','prop','scanner','self','syn','token']),m=n(['local','proc','fun','case','class','if','cond','or','dis','choice','not','thread','try','raise','lock','for','suchthat','meth','functor']),o=n(r),a=n(i);function t(e,t){if(e.eatSpace()){return null};if(e.match(/[{}]/)){return'bracket'};if(e.match(/(\[])/)){return'keyword'};if(e.match(s)||e.match(f)){return'operator'};if(e.match(l)){return'atom'};var r=e.match(m);if(r){if(!t.doInCurrentLine)t.currentIndent++;else t.doInCurrentLine=!1;if(r[0]=='proc'||r[0]=='fun')t.tokenize=p;else if(r[0]=='class')t.tokenize=h;else if(r[0]=='meth')t.tokenize=k;return'keyword'};if(e.match(o)||e.match(d)){return'keyword'};if(e.match(a)){t.currentIndent--;return'keyword'};var n=e.next();if(n=='"'||n=='\''){t.tokenize=z(n);return t.tokenize(e,t)};if(/[~\d]/.test(n)){if(n=='~'){if(!/^[0-9]/.test(e.peek()))return null;else if((e.next()=='0'&&e.match(/^[xX][0-9a-fA-F]+/))||e.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/))return'number'};if((n=='0'&&e.match(/^[xX][0-9a-fA-F]+/))||e.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/))return'number';return null};if(n=='%'){e.skipToEnd();return'comment'}
      2 else if(n=='/'){if(e.eat('*')){t.tokenize=u;return u(e,t)}};if(c.test(n)){return'operator'};e.eatWhile(/\w/);return'variable'};function h(e,n){if(e.eatSpace()){return null};e.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/);n.tokenize=t;return'variable-3'};function k(e,n){if(e.eatSpace()){return null};e.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/);n.tokenize=t;return'def'};function p(e,n){if(e.eatSpace()){return null};if(!n.hasPassedFirstStage&&e.eat('{')){n.hasPassedFirstStage=!0;return'bracket'}
      3 else if(n.hasPassedFirstStage){e.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/);n.hasPassedFirstStage=!1;n.tokenize=t;return'def'}
      4 else{n.tokenize=t;return null}};function u(e,n){var i=!1,r;while(r=e.next()){if(r=='/'&&i){n.tokenize=t;break};i=(r=='*')};return'comment'};function z(e){return function(n,r){var i=!1,o,a=!1;while((o=n.next())!=null){if(o==e&&!i){a=!0;break};i=!i&&o=='\\'};if(a||!i)r.tokenize=t;return'string'}};function b(){var e=r.concat(i);return new RegExp('[\\[\\]]|('+e.join('|')+')$')};return{startState:function(){return{tokenize:t,currentIndent:0,doInCurrentLine:!1,hasPassedFirstStage:!1}},token:function(e,t){if(e.sol())t.doInCurrentLine=0;return t.tokenize(e,t)},indent:function(t,n){var r=n.replace(/^\s+|\s+$/g,'');if(r.match(a)||r.match(o)||r.match(/(\[])/))return e.indentUnit*(t.currentIndent-1);if(t.currentIndent<0)return 0;return t.currentIndent*e.indentUnit},fold:'indent',electricInput:b(),lineComment:'%',blockCommentStart:'/*',blockCommentEnd:'*/'}});e.defineMIME('text/x-oz','oz')});