diff options
author | Pushkar Joshi | 2012-03-06 17:05:05 -0800 |
---|---|---|
committer | Pushkar Joshi | 2012-03-06 17:05:05 -0800 |
commit | 794abd077a0cd4c797d3f566281deca77b184bfe (patch) | |
tree | 3bf4a83ca714def2671fe8cef93db859b0d5553f /imports/codemirror/mode/properties/properties.js | |
parent | c155cd238b6f9e0b8191e0fc533f7bc974b762c2 (diff) | |
parent | 2e3943a8f751ec572066f168b58464c24b9f29e5 (diff) | |
download | ninja-794abd077a0cd4c797d3f566281deca77b184bfe.tar.gz |
Merge branch 'master' into pentool
Diffstat (limited to 'imports/codemirror/mode/properties/properties.js')
-rwxr-xr-x | imports/codemirror/mode/properties/properties.js | 57 |
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 @@ | |||
1 | CodeMirror.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 | |||
57 | CodeMirror.defineMIME("text/x-properties", "properties"); | ||