summaryrefslogtreecommitdiff
path: root/public/vendor/codemirror/mode/spreadsheet
diff options
context:
space:
mode:
authorWu Cheng-Han2015-05-04 15:53:29 +0800
committerWu Cheng-Han2015-05-04 15:53:29 +0800
commit4b0ca55eb79e963523eb6c8197825e9e8ae904e2 (patch)
tree574f3923af77b37b41dbf1b00bcd7827ef724a28 /public/vendor/codemirror/mode/spreadsheet
parent61eb11d23c65c9e5c493c67d055f785cbec139e2 (diff)
First commit, version 0.2.7
Diffstat (limited to 'public/vendor/codemirror/mode/spreadsheet')
-rwxr-xr-xpublic/vendor/codemirror/mode/spreadsheet/index.html42
-rwxr-xr-xpublic/vendor/codemirror/mode/spreadsheet/spreadsheet.js109
2 files changed, 151 insertions, 0 deletions
diff --git a/public/vendor/codemirror/mode/spreadsheet/index.html b/public/vendor/codemirror/mode/spreadsheet/index.html
new file mode 100755
index 00000000..a52f76f0
--- /dev/null
+++ b/public/vendor/codemirror/mode/spreadsheet/index.html
@@ -0,0 +1,42 @@
+<!doctype html>
+
+<title>CodeMirror: Spreadsheet mode</title>
+<meta charset="utf-8"/>
+<link rel=stylesheet href="../../doc/docs.css">
+
+<link rel="stylesheet" href="../../lib/codemirror.css">
+<script src="../../lib/codemirror.js"></script>
+<script src="../../addon/edit/matchbrackets.js"></script>
+<script src="spreadsheet.js"></script>
+<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
+<div id=nav>
+ <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
+
+ <ul>
+ <li><a href="../../index.html">Home</a>
+ <li><a href="../../doc/manual.html">Manual</a>
+ <li><a href="https://github.com/codemirror/codemirror">Code</a>
+ </ul>
+ <ul>
+ <li><a href="../index.html">Language modes</a>
+ <li><a class=active href="#">Spreadsheet</a>
+ </ul>
+</div>
+
+<article>
+ <h2>Spreadsheet mode</h2>
+ <form><textarea id="code" name="code">=IF(A1:B2, TRUE, FALSE) / 100</textarea></form>
+
+ <script>
+ var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
+ lineNumbers: true,
+ matchBrackets: true,
+ extraKeys: {"Tab": "indentAuto"}
+ });
+ </script>
+
+ <p><strong>MIME types defined:</strong> <code>text/x-spreadsheet</code>.</p>
+
+ <h3>The Spreadsheet Mode</h3>
+ <p> Created by <a href="https://github.com/robertleeplummerjr">Robert Plummer</a></p>
+</article>
diff --git a/public/vendor/codemirror/mode/spreadsheet/spreadsheet.js b/public/vendor/codemirror/mode/spreadsheet/spreadsheet.js
new file mode 100755
index 00000000..6fab00fd
--- /dev/null
+++ b/public/vendor/codemirror/mode/spreadsheet/spreadsheet.js
@@ -0,0 +1,109 @@
+// CodeMirror, copyright (c) by Marijn Haverbeke and others
+// Distributed under an MIT license: http://codemirror.net/LICENSE
+
+(function(mod) {
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
+ mod(require("../../lib/codemirror"));
+ else if (typeof define == "function" && define.amd) // AMD
+ define(["../../lib/codemirror"], mod);
+ else // Plain browser env
+ mod(CodeMirror);
+})(function(CodeMirror) {
+ "use strict";
+
+ CodeMirror.defineMode("spreadsheet", function () {
+ return {
+ startState: function () {
+ return {
+ stringType: null,
+ stack: []
+ };
+ },
+ token: function (stream, state) {
+ if (!stream) return;
+
+ //check for state changes
+ if (state.stack.length === 0) {
+ //strings
+ if ((stream.peek() == '"') || (stream.peek() == "'")) {
+ state.stringType = stream.peek();
+ stream.next(); // Skip quote
+ state.stack.unshift("string");
+ }
+ }
+
+ //return state
+ //stack has
+ switch (state.stack[0]) {
+ case "string":
+ while (state.stack[0] === "string" && !stream.eol()) {
+ if (stream.peek() === state.stringType) {
+ stream.next(); // Skip quote
+ state.stack.shift(); // Clear flag
+ } else if (stream.peek() === "\\") {
+ stream.next();
+ stream.next();
+ } else {
+ stream.match(/^.[^\\\"\']*/);
+ }
+ }
+ return "string";
+
+ case "characterClass":
+ while (state.stack[0] === "characterClass" && !stream.eol()) {
+ if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./)))
+ state.stack.shift();
+ }
+ return "operator";
+ }
+
+ var peek = stream.peek();
+
+ //no stack
+ switch (peek) {
+ case "[":
+ stream.next();
+ state.stack.unshift("characterClass");
+ return "bracket";
+ case ":":
+ stream.next();
+ return "operator";
+ case "\\":
+ if (stream.match(/\\[a-z]+/)) return "string-2";
+ else return null;
+ case ".":
+ case ",":
+ case ";":
+ case "*":
+ case "-":
+ case "+":
+ case "^":
+ case "<":
+ case "/":
+ case "=":
+ stream.next();
+ return "atom";
+ case "$":
+ stream.next();
+ return "builtin";
+ }
+
+ if (stream.match(/\d+/)) {
+ if (stream.match(/^\w+/)) return "error";
+ return "number";
+ } else if (stream.match(/^[a-zA-Z_]\w*/)) {
+ if (stream.match(/(?=[\(.])/, false)) return "keyword";
+ return "variable-2";
+ } else if (["[", "]", "(", ")", "{", "}"].indexOf(peek) != -1) {
+ stream.next();
+ return "bracket";
+ } else if (!stream.eatSpace()) {
+ stream.next();
+ }
+ return null;
+ }
+ };
+ });
+
+ CodeMirror.defineMIME("text/x-spreadsheet", "spreadsheet");
+});