0
|
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
2 // Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
|
3
|
|
4 (function (mod) {
|
|
5 if (typeof exports == "object" && typeof module == "object") // CommonJS
|
|
6 mod(require("../../lib/codemirror"), require("../haskell/haskell"))
|
|
7 else if (typeof define == "function" && define.amd) // AMD
|
|
8 define(["../../lib/codemirror", "../haskell/haskell"], mod)
|
|
9 else // Plain browser env
|
|
10 mod(CodeMirror)
|
|
11 })(function (CodeMirror) {
|
|
12 "use strict"
|
|
13
|
|
14 CodeMirror.defineMode("haskell-literate", function (config, parserConfig) {
|
|
15 var baseMode = CodeMirror.getMode(config, (parserConfig && parserConfig.base) || "haskell")
|
|
16
|
|
17 return {
|
|
18 startState: function () {
|
|
19 return {
|
|
20 inCode: false,
|
|
21 baseState: CodeMirror.startState(baseMode)
|
|
22 }
|
|
23 },
|
|
24 token: function (stream, state) {
|
|
25 if (stream.sol()) {
|
|
26 if (state.inCode = stream.eat(">"))
|
|
27 return "meta"
|
|
28 }
|
|
29 if (state.inCode) {
|
|
30 return baseMode.token(stream, state.baseState)
|
|
31 } else {
|
|
32 stream.skipToEnd()
|
|
33 return "comment"
|
|
34 }
|
|
35 },
|
|
36 innerMode: function (state) {
|
|
37 return state.inCode ? {state: state.baseState, mode: baseMode} : null
|
|
38 }
|
|
39 }
|
|
40 }, "haskell")
|
|
41
|
|
42 CodeMirror.defineMIME("text/x-literate-haskell", "haskell-literate")
|
|
43 });
|