Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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.s criptingModeSpec); | |
| 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 electricChars: "/{}:", | |
| 62 | |
| 63 innerMode: function(state) { | |
| 64 if (state.token == scriptingDispatch) return {state: state.scriptState, mo de: scriptingMode}; | |
| 65 else return {state: state.htmlState, mode: htmlMixedMode}; | |
| 66 } | |
| 67 }; | |
| 68 }, "htmlmixed"); | |
| 69 | |
| 70 CodeMirror.defineMIME("application/x-ejs", { name: "htmlembedded", scriptingMode Spec:"javascript"}); | |
| 71 CodeMirror.defineMIME("application/x-aspx", { name: "htmlembedded", scriptingMod eSpec:"text/x-csharp"}); | |
| 72 CodeMirror.defineMIME("application/x-jsp", { name: "htmlembedded", scriptingMode Spec:"text/x-java"}); | |
| 73 CodeMirror.defineMIME("application/x-erb", { name: "htmlembedded", scriptingMode Spec:"ruby"}); | |
|
paulirish
2013/07/03 21:20:48
Looks like we don't include the Ruby mode.
| |
| OLD | NEW |