aboutsummaryrefslogtreecommitdiff
path: root/imports/codemirror/mode/properties/properties.js
diff options
context:
space:
mode:
authorJon Reid2012-03-06 18:08:11 -0800
committerJon Reid2012-03-06 18:08:11 -0800
commita12603cfcfe9d82def3b972dcbcc80f1e790ad85 (patch)
treef52c7dcc837dd98d28f505696b67b94db15e4c63 /imports/codemirror/mode/properties/properties.js
parent60bba95eaffa8b5c741c6c85fb84b327cd75d6c3 (diff)
parentbb6a1d82b2884b410f5859cc0c2cafd380acbe6a (diff)
downloadninja-a12603cfcfe9d82def3b972dcbcc80f1e790ad85.tar.gz
Merge remote-tracking branch 'ninja-jduran/TimelineUber' into Timeline-uber
Diffstat (limited to 'imports/codemirror/mode/properties/properties.js')
-rwxr-xr-ximports/codemirror/mode/properties/properties.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/imports/codemirror/mode/properties/properties.js b/imports/codemirror/mode/properties/properties.js
new file mode 100755
index 00000000..2529505b
--- /dev/null
+++ b/imports/codemirror/mode/properties/properties.js
@@ -0,0 +1,57 @@
1CodeMirror.defineMode("properties", function() {
2 return {
3 token: function(stream, state) {
4 var sol = stream.sol();
5 var eol = stream.eol();
6
7 if (sol) {
8 if (state.nextMultiline) {
9 state.inMultiline = true;
10 state.nextMultiline = false;
11 } else {
12 state.position = "key";
13 }
14 }
15
16 if (eol && ! state.nextMultiline) {
17 state.inMultiline = false;
18 state.position = "key";
19 }
20
21 if (sol) {
22 while(stream.eatSpace());
23 }
24
25 var ch = stream.next();
26
27 if (sol && (ch === "#" || ch === "!")) {
28 state.position = "comment";
29 stream.skipToEnd();
30 return "comment";
31
32 } else if (ch === "=" || ch === ":") {
33 state.position = "value";
34 return "equals";
35
36 } else if (ch === "\\" && state.position === "value") {
37 if (stream.next() !== "u") { // u = Unicode sequence \u1234
38 // Multiline value
39 state.nextMultiline = true;
40 }
41 }
42
43 return state.position;
44 },
45
46 startState: function() {
47 return {
48 position : "key", // Current position, "key", "value" or "comment"
49 nextMultiline : false, // Is the next line multiline value
50 inMultiline : false // Is the current line a multiline value
51 };
52 }
53
54 };
55});
56
57CodeMirror.defineMIME("text/x-properties", "properties");