芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/.trash/media.6/vendor/codemirror/mode/elm/elm.js
// 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"); });