| Current Path : /home/digilove/www/41423/ |
| Current File : /home/digilove/www/41423/elm.tar |
elm.js 0000644 00000012775 15235150045 0005673 0 ustar 00 // 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");
});
elm.min.js 0000644 00000004047 15235150045 0006446 0 ustar 00 !(function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)})((function(a){"use strict";a.defineMode("elm",(function(){function a(a,b,c){return b(c),c(a,b)}function b(){return function(b,p){if(b.eatWhile(o))return null;var q=b.next();if(n.test(q))return"{"===q&&b.eat("-")?a(b,p,c(1)):"["===q&&b.match("glsl|")?a(b,p,g):"builtin";if("'"===q)return a(b,p,f);if('"'===q)return b.eat('"')?b.eat('"')?a(b,p,d):"string":a(b,p,e);if(i.test(q))return b.eatWhile(j),"variable-2";if(h.test(q)){var r=1===b.pos;return b.eatWhile(j),r?"def":"variable"}if(k.test(q)){if("0"===q){if(b.eat(/[xX]/))return b.eatWhile(l),"number"}else b.eatWhile(k);return b.eat(".")&&b.eatWhile(k),b.eat(/[eE]/)&&(b.eat(/[-+]/),b.eatWhile(k)),"number"}return m.test(q)?"-"===q&&b.eat("-")?(b.skipToEnd(),"comment"):(b.eatWhile(m),"keyword"):"_"===q?"keyword":"error"}}function c(a){return 0==a?b():function(d,e){for(;!d.eol();){var f=d.next();if("{"==f&&d.eat("-"))++a;else if("-"==f&&d.eat("}")&&0===--a)return e(b()),"comment"}return e(c(a)),"comment"}}function d(a,c){for(;!a.eol();){if('"'===a.next()&&a.eat('"')&&a.eat('"'))return c(b()),"string"}return"string"}function e(a,c){for(;a.skipTo('\\"');)a.next(),a.next();return a.skipTo('"')?(a.next(),c(b()),"string"):(a.skipToEnd(),c(b()),"error")}function f(a,c){for(;a.skipTo("\\'");)a.next(),a.next();return a.skipTo("'")?(a.next(),c(b()),"string"):(a.skipToEnd(),c(b()),"error")}function g(a,c){for(;!a.eol();){if("|"===a.next()&&a.eat("]"))return c(b()),"string"}return"string"}var h=/[a-z]/,i=/[A-Z]/,j=/[a-zA-Z0-9_]/,k=/[0-9]/,l=/[0-9A-Fa-f]/,m=/[-&*+.\\\/<>=?^|:]/,n=/[(),[\]{}]/,o=/[ \v\f]/,p={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:b()}},copyState:function(a){return{f:a.f}},token:function(a,b){var c=b.f(a,(function(a){b.f=a})),d=a.current();return p.hasOwnProperty(d)?"keyword":c}}})),a.defineMIME("text/x-elm","elm")}));