| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 | 
							- // CodeMirror, copyright (c) by Marijn Haverbeke and others
 
- // Distributed under an MIT license: http://codemirror.net/LICENSE
 
- (function(mod) {
 
-   if (typeof exports == "object" && typeof module == "object") // CommonJS
 
-     mod(require("../../lib/codemirror"));
 
-   else if (typeof define == "function" && define.amd) // AMD
 
-     define(["../../lib/codemirror"], mod);
 
-   else // Plain browser env
 
-     mod(CodeMirror);
 
- })(function(CodeMirror) {
 
-   "use strict";
 
-   CodeMirror.defineMode("elm", function() {
 
-     function switchState(source, setState, f)
 
-     {
 
-       setState(f);
 
-       return f(source, setState);
 
-     }
 
-     var lowerRE = /[a-z]/;
 
-     var upperRE = /[A-Z]/;
 
-     var innerRE = /[a-zA-Z0-9_]/;
 
-     var digitRE = /[0-9]/;
 
-     var hexRE = /[0-9A-Fa-f]/;
 
-     var symbolRE = /[-&*+.\\/<>=?^|:]/;
 
-     var specialRE = /[(),[\]{}]/;
 
-     var spacesRE = /[ \v\f]/; // newlines are handled in tokenizer
 
-     function normal()
 
-     {
 
-       return function(source, setState)
 
-       {
 
-         if (source.eatWhile(spacesRE))
 
-         {
 
-           return null;
 
-         }
 
-         var char = source.next();
 
-         if (specialRE.test(char))
 
-         {
 
-           return (char === '{' && source.eat('-'))
 
-             ? switchState(source, setState, chompMultiComment(1))
 
-             : (char === '[' && source.match('glsl|'))
 
-                 ? switchState(source, setState, chompGlsl)
 
-                 : 'builtin';
 
-         }
 
-         if (char === '\'')
 
-         {
 
-           return switchState(source, setState, chompChar);
 
-         }
 
-         if (char === '"')
 
-         {
 
-           return source.eat('"')
 
-             ? source.eat('"')
 
-                 ? switchState(source, setState, chompMultiString)
 
-                 : 'string'
 
-             : switchState(source, setState, chompSingleString);
 
-         }
 
-         if (upperRE.test(char))
 
-         {
 
-           source.eatWhile(innerRE);
 
-           return 'variable-2';
 
-         }
 
-         if (lowerRE.test(char))
 
-         {
 
-           var isDef = source.pos === 1;
 
-           source.eatWhile(innerRE);
 
-           return isDef ? "def" : "variable";
 
-         }
 
-         if (digitRE.test(char))
 
-         {
 
-           if (char === '0')
 
-           {
 
-             if (source.eat(/[xX]/))
 
-             {
 
-               source.eatWhile(hexRE); // should require at least 1
 
-               return "number";
 
-             }
 
-           }
 
-           else
 
-           {
 
-             source.eatWhile(digitRE);
 
-           }
 
-           if (source.eat('.'))
 
-           {
 
-             source.eatWhile(digitRE); // should require at least 1
 
-           }
 
-           if (source.eat(/[eE]/))
 
-           {
 
-             source.eat(/[-+]/);
 
-             source.eatWhile(digitRE); // should require at least 1
 
-           }
 
-           return "number";
 
-         }
 
-         if (symbolRE.test(char))
 
-         {
 
-           if (char === '-' && source.eat('-'))
 
-           {
 
-             source.skipToEnd();
 
-             return "comment";
 
-           }
 
-           source.eatWhile(symbolRE);
 
-           return "keyword";
 
-         }
 
-         if (char === '_')
 
-         {
 
-           return "keyword";
 
-         }
 
-         return "error";
 
-       }
 
-     }
 
-     function chompMultiComment(nest)
 
-     {
 
-       if (nest == 0)
 
-       {
 
-         return normal();
 
-       }
 
-       return function(source, setState)
 
-       {
 
-         while (!source.eol())
 
-         {
 
-           var char = source.next();
 
-           if (char == '{' && source.eat('-'))
 
-           {
 
-             ++nest;
 
-           }
 
-           else if (char == '-' && source.eat('}'))
 
-           {
 
-             --nest;
 
-             if (nest === 0)
 
-             {
 
-               setState(normal());
 
-               return 'comment';
 
-             }
 
-           }
 
-         }
 
-         setState(chompMultiComment(nest));
 
-         return 'comment';
 
-       }
 
-     }
 
-     function chompMultiString(source, setState)
 
-     {
 
-       while (!source.eol())
 
-       {
 
-         var char = source.next();
 
-         if (char === '"' && source.eat('"') && source.eat('"'))
 
-         {
 
-           setState(normal());
 
-           return 'string';
 
-         }
 
-       }
 
-       return 'string';
 
-     }
 
-     function chompSingleString(source, setState)
 
-     {
 
-       while (source.skipTo('\\"')) { source.next(); source.next(); }
 
-       if (source.skipTo('"'))
 
-       {
 
-         source.next();
 
-         setState(normal());
 
-         return 'string';
 
-       }
 
-       source.skipToEnd();
 
-       setState(normal());
 
-       return 'error';
 
-     }
 
-     function chompChar(source, setState)
 
-     {
 
-       while (source.skipTo("\\'")) { source.next(); source.next(); }
 
-       if (source.skipTo("'"))
 
-       {
 
-         source.next();
 
-         setState(normal());
 
-         return 'string';
 
-       }
 
-       source.skipToEnd();
 
-       setState(normal());
 
-       return 'error';
 
-     }
 
-     function chompGlsl(source, setState)
 
-     {
 
-       while (!source.eol())
 
-       {
 
-         var char = source.next();
 
-         if (char === '|' && source.eat(']'))
 
-         {
 
-           setState(normal());
 
-           return 'string';
 
-         }
 
-       }
 
-       return 'string';
 
-     }
 
-     var wellKnownWords = {
 
-       case: 1,
 
-       of: 1,
 
-       as: 1,
 
-       if: 1,
 
-       then: 1,
 
-       else: 1,
 
-       let: 1,
 
-       in: 1,
 
-       type: 1,
 
-       alias: 1,
 
-       module: 1,
 
-       where: 1,
 
-       import: 1,
 
-       exposing: 1,
 
-       port: 1
 
-     };
 
-     return {
 
-       startState: function ()  { return { f: normal() }; },
 
-       copyState:  function (s) { return { f: s.f }; },
 
-       token: function(stream, state) {
 
-         var type = state.f(stream, function(s) { state.f = s; });
 
-         var word = stream.current();
 
-         return (wellKnownWords.hasOwnProperty(word)) ? 'keyword' : type;
 
-       }
 
-     };
 
-   });
 
-   CodeMirror.defineMIME("text/x-elm", "elm");
 
- });
 
 
  |