summaryrefslogtreecommitdiff
path: root/codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded
diff options
context:
space:
mode:
Diffstat (limited to 'codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded')
-rw-r--r--codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded/htmlembedded.js68
-rw-r--r--codemirror_ui/lib/CodeMirror-2.3/mode/htmlembedded/index.html49
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>