haskell-literate.js
43 lines
| 1.4 KiB
| application/javascript
|
JavascriptLexer
r1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others | |||
r4105 | // Distributed under an MIT license: https://codemirror.net/LICENSE | |||
r1 | ||||
(function (mod) { | ||||
if (typeof exports == "object" && typeof module == "object") // CommonJS | ||||
mod(require("../../lib/codemirror"), require("../haskell/haskell")) | ||||
else if (typeof define == "function" && define.amd) // AMD | ||||
define(["../../lib/codemirror", "../haskell/haskell"], mod) | ||||
else // Plain browser env | ||||
mod(CodeMirror) | ||||
})(function (CodeMirror) { | ||||
"use strict" | ||||
CodeMirror.defineMode("haskell-literate", function (config, parserConfig) { | ||||
var baseMode = CodeMirror.getMode(config, (parserConfig && parserConfig.base) || "haskell") | ||||
return { | ||||
startState: function () { | ||||
return { | ||||
inCode: false, | ||||
baseState: CodeMirror.startState(baseMode) | ||||
} | ||||
}, | ||||
token: function (stream, state) { | ||||
if (stream.sol()) { | ||||
if (state.inCode = stream.eat(">")) | ||||
return "meta" | ||||
} | ||||
if (state.inCode) { | ||||
return baseMode.token(stream, state.baseState) | ||||
} else { | ||||
stream.skipToEnd() | ||||
return "comment" | ||||
} | ||||
}, | ||||
innerMode: function (state) { | ||||
return state.inCode ? {state: state.baseState, mode: baseMode} : null | ||||
} | ||||
} | ||||
}, "haskell") | ||||
CodeMirror.defineMIME("text/x-literate-haskell", "haskell-literate") | ||||
r4105 | }); | |||