aboutsummaryrefslogtreecommitdiff
path: root/imports/codemirror/lib/util/runmode.js
diff options
context:
space:
mode:
authorValerio Virgillito2012-02-15 17:04:39 -0800
committerValerio Virgillito2012-02-15 17:04:39 -0800
commitfe71cb9aa1700199c0089166ad54fc56eb760644 (patch)
treeb0c7c24b1f45a079e1c09312ca716e3d35aecad4 /imports/codemirror/lib/util/runmode.js
parent747616980cad14f0b65fbcc7f497ed9680a39d29 (diff)
parentd366c0bd1af6471511217ed574083e15059519b5 (diff)
downloadninja-fe71cb9aa1700199c0089166ad54fc56eb760644.tar.gz
Merge branch 'refs/heads/master' into components
Diffstat (limited to 'imports/codemirror/lib/util/runmode.js')
-rwxr-xr-ximports/codemirror/lib/util/runmode.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/imports/codemirror/lib/util/runmode.js b/imports/codemirror/lib/util/runmode.js
new file mode 100755
index 00000000..de4a7602
--- /dev/null
+++ b/imports/codemirror/lib/util/runmode.js
@@ -0,0 +1,27 @@
1CodeMirror.runMode = function(string, modespec, callback) {
2 var mode = CodeMirror.getMode({indentUnit: 2}, modespec);
3 var isNode = callback.nodeType == 1;
4 if (isNode) {
5 var node = callback, accum = [];
6 callback = function(string, style) {
7 if (string == "\n")
8 accum.push("<br>");
9 else if (style)
10 accum.push("<span class=\"cm-" + CodeMirror.htmlEscape(style) + "\">" + CodeMirror.htmlEscape(string) + "</span>");
11 else
12 accum.push(CodeMirror.htmlEscape(string));
13 }
14 }
15 var lines = CodeMirror.splitLines(string), state = CodeMirror.startState(mode);
16 for (var i = 0, e = lines.length; i < e; ++i) {
17 if (i) callback("\n");
18 var stream = new CodeMirror.StringStream(lines[i]);
19 while (!stream.eol()) {
20 var style = mode.token(stream, state);
21 callback(stream.current(), style, i, stream.start);
22 stream.start = stream.pos;
23 }
24 }
25 if (isNode)
26 node.innerHTML = accum.join("");
27};