Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
malwaredllc
GitHub Repository: malwaredllc/byob
Path: blob/master/web-gui/buildyourownbotnet/assets/js/codemirror/mode/htmlembedded/htmlembedded.js
1294 views
1
CodeMirror.defineMode("htmlembedded", function(config, parserConfig) {
2
3
//config settings
4
var scriptStartRegex = parserConfig.scriptStartRegex || /^<%/i,
5
scriptEndRegex = parserConfig.scriptEndRegex || /^%>/i;
6
7
//inner modes
8
var scriptingMode, htmlMixedMode;
9
10
//tokenizer when in html mode
11
function htmlDispatch(stream, state) {
12
if (stream.match(scriptStartRegex, false)) {
13
state.token=scriptingDispatch;
14
return scriptingMode.token(stream, state.scriptState);
15
}
16
else
17
return htmlMixedMode.token(stream, state.htmlState);
18
}
19
20
//tokenizer when in scripting mode
21
function scriptingDispatch(stream, state) {
22
if (stream.match(scriptEndRegex, false)) {
23
state.token=htmlDispatch;
24
return htmlMixedMode.token(stream, state.htmlState);
25
}
26
else
27
return scriptingMode.token(stream, state.scriptState);
28
}
29
30
31
return {
32
startState: function() {
33
scriptingMode = scriptingMode || CodeMirror.getMode(config, parserConfig.scriptingModeSpec);
34
htmlMixedMode = htmlMixedMode || CodeMirror.getMode(config, "htmlmixed");
35
return {
36
token : parserConfig.startOpen ? scriptingDispatch : htmlDispatch,
37
htmlState : CodeMirror.startState(htmlMixedMode),
38
scriptState : CodeMirror.startState(scriptingMode)
39
};
40
},
41
42
token: function(stream, state) {
43
return state.token(stream, state);
44
},
45
46
indent: function(state, textAfter) {
47
if (state.token == htmlDispatch)
48
return htmlMixedMode.indent(state.htmlState, textAfter);
49
else if (scriptingMode.indent)
50
return scriptingMode.indent(state.scriptState, textAfter);
51
},
52
53
copyState: function(state) {
54
return {
55
token : state.token,
56
htmlState : CodeMirror.copyState(htmlMixedMode, state.htmlState),
57
scriptState : CodeMirror.copyState(scriptingMode, state.scriptState)
58
};
59
},
60
61
innerMode: function(state) {
62
if (state.token == scriptingDispatch) return {state: state.scriptState, mode: scriptingMode};
63
else return {state: state.htmlState, mode: htmlMixedMode};
64
}
65
};
66
}, "htmlmixed");
67
68
CodeMirror.defineMIME("application/x-ejs", { name: "htmlembedded", scriptingModeSpec:"javascript"});
69
CodeMirror.defineMIME("application/x-aspx", { name: "htmlembedded", scriptingModeSpec:"text/x-csharp"});
70
CodeMirror.defineMIME("application/x-jsp", { name: "htmlembedded", scriptingModeSpec:"text/x-java"});
71
CodeMirror.defineMIME("application/x-erb", { name: "htmlembedded", scriptingModeSpec:"ruby"});
72
73