diff options
Diffstat (limited to 'codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded')
-rw-r--r-- | codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded/htmlembedded.js | 68 | ||||
-rw-r--r-- | codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded/index.html | 49 |
2 files changed, 117 insertions, 0 deletions
diff --git a/codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded/htmlembedded.js b/codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded/htmlembedded.js new file mode 100644 index 0000000..1773aeb --- /dev/null +++ b/codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded/htmlembedded.js @@ -0,0 +1,68 @@ +CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { + + //config settings + var scriptStartRegex = parserConfig.scriptStartRegex || /^<%/i, + scriptEndRegex = parserConfig.scriptEndRegex || /^%>/i; + + //inner modes + var scriptingMode, htmlMixedMode; + + //tokenizer when in html mode + function htmlDispatch(stream, state) { + if (stream.match(scriptStartRegex, false)) { + state.token=scriptingDispatch; + return scriptingMode.token(stream, state.scriptState); + } + else + return htmlMixedMode.token(stream, state.htmlState); + } + + //tokenizer when in scripting mode + function scriptingDispatch(stream, state) { + if (stream.match(scriptEndRegex, false)) { + state.token=htmlDispatch; + return htmlMixedMode.token(stream, state.htmlState); + } + else + return scriptingMode.token(stream, state.scriptState); + } + + + return { + startState: function() { + scriptingMode = scriptingMode || CodeMirror.getMode(config, parserConfig.scriptingModeSpec); + htmlMixedMode = htmlMixedMode || CodeMirror.getMode(config, "htmlmixed"); + return { + token : parserConfig.startOpen ? scriptingDispatch : htmlDispatch, + htmlState : htmlMixedMode.startState(), + scriptState : scriptingMode.startState() + } + }, + + token: function(stream, state) { + return state.token(stream, state); + }, + + indent: function(state, textAfter) { + if (state.token == htmlDispatch) + return htmlMixedMode.indent(state.htmlState, textAfter); + else + return scriptingMode.indent(state.scriptState, textAfter); + }, + + copyState: function(state) { + return { + token : state.token, + htmlState : CodeMirror.copyState(htmlMixedMode, state.htmlState), + scriptState : CodeMirror.copyState(scriptingMode, state.scriptState) + } + }, + + + electricChars: "/{}:" + } +}, "htmlmixed"); + +CodeMirror.defineMIME("application/x-ejs", { name: "htmlembedded", scriptingModeSpec:"javascript"}); +CodeMirror.defineMIME("application/x-aspx", { name: "htmlembedded", scriptingModeSpec:"text/x-csharp"}); +CodeMirror.defineMIME("application/x-jsp", { name: "htmlembedded", scriptingModeSpec:"text/x-java"}); diff --git a/codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded/index.html b/codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded/index.html new file mode 100644 index 0000000..c1374e5 --- /dev/null +++ b/codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded/index.html @@ -0,0 +1,49 @@ +<!doctype html> +<html> + <head> + <title>CodeMirror: Html Embedded Scripts mode</title> + <link rel="stylesheet" href="../../lib/codemirror.css"> + <script src="../../lib/codemirror.js"></script> + <script src="../xml/xml.js"></script> + <script src="../javascript/javascript.js"></script> + <script src="../css/css.js"></script> + <script src="../htmlmixed/htmlmixed.js"></script> + <script src="htmlembedded.js"></script> + <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> + <link rel="stylesheet" href="../../doc/docs.css"> + </head> + <body> + <h1>CodeMirror: Html Embedded Scripts mode</h1> + +<form><textarea id="code" name="code"> +<% +function hello(who) { + return "Hello " + who; +} +%> +This is an example of EJS (embedded javascript) +<p>The program says <%= hello("world") %>.</p> +<script> + alert("And here is some normal JS code"); // also colored +</script> +</textarea></form> + + <script> + var editor = CodeMirror.fromTextArea(document.getElementById("code"), { + lineNumbers: true, + matchBrackets: true, + mode: "application/x-ejs", + indentUnit: 4, + indentWithTabs: true, + enterMode: "keep", + tabMode: "shift" + }); + </script> + + <p>Mode for html embedded scripts like JSP and ASP.NET. Depends on HtmlMixed which in turn depends on + JavaScript, CSS and XML.<br />Other dependancies include those of the scriping language chosen.</p> + + <p><strong>MIME types defined:</strong> <code>application/x-aspx</code> (ASP.NET), + <code>application/x-ejs</code> (Embedded Javascript), <code>application/x-jsp</code> (JavaServer Pages)</p> + </body> +</html> |