summaryrefslogtreecommitdiff
path: root/codemirror_ui/lib/CodeMirror-2.3/mode/properties
diff options
context:
space:
mode:
Diffstat (limited to 'codemirror_ui/lib/CodeMirror-2.3/mode/properties')
-rw-r--r--codemirror_ui/lib/CodeMirror-2.3/mode/properties/index.html40
-rw-r--r--codemirror_ui/lib/CodeMirror-2.3/mode/properties/properties.js63
2 files changed, 103 insertions, 0 deletions
diff --git a/codemirror_ui/lib/CodeMirror-2.3/mode/properties/index.html b/codemirror_ui/lib/CodeMirror-2.3/mode/properties/index.html
new file mode 100644
index 0000000..4f0c269
--- /dev/null
+++ b/codemirror_ui/lib/CodeMirror-2.3/mode/properties/index.html
@@ -0,0 +1,40 @@
+<!doctype html>
+<html>
+ <head>
+ <title>CodeMirror: Properties files mode</title>
+ <link rel="stylesheet" href="../../lib/codemirror.css">
+ <script src="../../lib/codemirror.js"></script>
+ <script src="properties.js"></script>
+ <style>.CodeMirror {border-top: 1px solid #ddd; border-bottom: 1px solid #ddd;}</style>
+ <link rel="stylesheet" href="../../doc/docs.css">
+ </head>
+ <body>
+ <h1>CodeMirror: Properties files mode</h1>
+ <form><textarea id="code" name="code">
+# This is a properties file
+a.key = A value
+another.key = http://example.com
+! Exclamation mark as comment
+but.not=Within ! A value # indeed
+ # Spaces at the beginning of a line
+ spaces.before.key=value
+backslash=Used for multi\
+ line entries,\
+ that's convenient.
+# Unicode sequences
+unicode.key=This is \u0020 Unicode
+no.multiline=here
+# Colons
+colons : can be used too
+# Spaces
+spaces\ in\ keys=Not very common...
+</textarea></form>
+ <script>
+ var editor = CodeMirror.fromTextArea(document.getElementById("code"), {});
+ </script>
+
+ <p><strong>MIME types defined:</strong> <code>text/x-properties</code>,
+ <code>text/x-ini</code>.</p>
+
+ </body>
+</html>
diff --git a/codemirror_ui/lib/CodeMirror-2.3/mode/properties/properties.js b/codemirror_ui/lib/CodeMirror-2.3/mode/properties/properties.js
new file mode 100644
index 0000000..d3a13c7
--- /dev/null
+++ b/codemirror_ui/lib/CodeMirror-2.3/mode/properties/properties.js
@@ -0,0 +1,63 @@
+CodeMirror.defineMode("properties", function() {
+ return {
+ token: function(stream, state) {
+ var sol = stream.sol() || state.afterSection;
+ var eol = stream.eol();
+
+ state.afterSection = false;
+
+ if (sol) {
+ if (state.nextMultiline) {
+ state.inMultiline = true;
+ state.nextMultiline = false;
+ } else {
+ state.position = "def";
+ }
+ }
+
+ if (eol && ! state.nextMultiline) {
+ state.inMultiline = false;
+ state.position = "def";
+ }
+
+ if (sol) {
+ while(stream.eatSpace());
+ }
+
+ var ch = stream.next();
+
+ if (sol && (ch === "#" || ch === "!" || ch === ";")) {
+ state.position = "comment";
+ stream.skipToEnd();
+ return "comment";
+ } else if (sol && ch === "[") {
+ state.afterSection = true;
+ stream.skipTo("]"); stream.eat("]");
+ return "header";
+ } else if (ch === "=" || ch === ":") {
+ state.position = "quote";
+ return null;
+ } else if (ch === "\\" && state.position === "quote") {
+ if (stream.next() !== "u") { // u = Unicode sequence \u1234
+ // Multiline value
+ state.nextMultiline = true;
+ }
+ }
+
+ return state.position;
+ },
+
+ startState: function() {
+ return {
+ position : "def", // Current position, "def", "quote" or "comment"
+ nextMultiline : false, // Is the next line multiline value
+ inMultiline : false, // Is the current line a multiline value
+ afterSection : false // Did we just open a section
+ };
+ }
+
+ };
+});
+
+CodeMirror.defineMIME("text/x-properties", "properties");
+CodeMirror.defineMIME("text/x-ini", "properties");