From 4b0ca55eb79e963523eb6c8197825e9e8ae904e2 Mon Sep 17 00:00:00 2001
From: Wu Cheng-Han
Date: Mon, 4 May 2015 15:53:29 +0800
Subject: First commit, version 0.2.7
---
public/vendor/codemirror/mode/shell/index.html | 66 ++++++++++++
public/vendor/codemirror/mode/shell/shell.js | 139 +++++++++++++++++++++++++
public/vendor/codemirror/mode/shell/test.js | 58 +++++++++++
3 files changed, 263 insertions(+)
create mode 100755 public/vendor/codemirror/mode/shell/index.html
create mode 100755 public/vendor/codemirror/mode/shell/shell.js
create mode 100755 public/vendor/codemirror/mode/shell/test.js
(limited to 'public/vendor/codemirror/mode/shell')
diff --git a/public/vendor/codemirror/mode/shell/index.html b/public/vendor/codemirror/mode/shell/index.html
new file mode 100755
index 00000000..0b56300b
--- /dev/null
+++ b/public/vendor/codemirror/mode/shell/index.html
@@ -0,0 +1,66 @@
+
+
+
CodeMirror: Shell mode
+
+
+
+
+
+
+
+
+
+
+
+Shell mode
+
+
+
+
+
+
+MIME types defined: text/x-sh
.
+
diff --git a/public/vendor/codemirror/mode/shell/shell.js b/public/vendor/codemirror/mode/shell/shell.js
new file mode 100755
index 00000000..a684e8c2
--- /dev/null
+++ b/public/vendor/codemirror/mode/shell/shell.js
@@ -0,0 +1,139 @@
+// 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('shell', function() {
+
+ var words = {};
+ function define(style, string) {
+ var split = string.split(' ');
+ for(var i = 0; i < split.length; i++) {
+ words[split[i]] = style;
+ }
+ };
+
+ // Atoms
+ define('atom', 'true false');
+
+ // Keywords
+ define('keyword', 'if then do else elif while until for in esac fi fin ' +
+ 'fil done exit set unset export function');
+
+ // Commands
+ define('builtin', 'ab awk bash beep cat cc cd chown chmod chroot clear cp ' +
+ 'curl cut diff echo find gawk gcc get git grep kill killall ln ls make ' +
+ 'mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh ' +
+ 'shopt shred source sort sleep ssh start stop su sudo tee telnet top ' +
+ 'touch vi vim wall wc wget who write yes zsh');
+
+ function tokenBase(stream, state) {
+ if (stream.eatSpace()) return null;
+
+ var sol = stream.sol();
+ var ch = stream.next();
+
+ if (ch === '\\') {
+ stream.next();
+ return null;
+ }
+ if (ch === '\'' || ch === '"' || ch === '`') {
+ state.tokens.unshift(tokenString(ch));
+ return tokenize(stream, state);
+ }
+ if (ch === '#') {
+ if (sol && stream.eat('!')) {
+ stream.skipToEnd();
+ return 'meta'; // 'comment'?
+ }
+ stream.skipToEnd();
+ return 'comment';
+ }
+ if (ch === '$') {
+ state.tokens.unshift(tokenDollar);
+ return tokenize(stream, state);
+ }
+ if (ch === '+' || ch === '=') {
+ return 'operator';
+ }
+ if (ch === '-') {
+ stream.eat('-');
+ stream.eatWhile(/\w/);
+ return 'attribute';
+ }
+ if (/\d/.test(ch)) {
+ stream.eatWhile(/\d/);
+ if(stream.eol() || !/\w/.test(stream.peek())) {
+ return 'number';
+ }
+ }
+ stream.eatWhile(/[\w-]/);
+ var cur = stream.current();
+ if (stream.peek() === '=' && /\w+/.test(cur)) return 'def';
+ return words.hasOwnProperty(cur) ? words[cur] : null;
+ }
+
+ function tokenString(quote) {
+ return function(stream, state) {
+ var next, end = false, escaped = false;
+ while ((next = stream.next()) != null) {
+ if (next === quote && !escaped) {
+ end = true;
+ break;
+ }
+ if (next === '$' && !escaped && quote !== '\'') {
+ escaped = true;
+ stream.backUp(1);
+ state.tokens.unshift(tokenDollar);
+ break;
+ }
+ escaped = !escaped && next === '\\';
+ }
+ if (end || !escaped) {
+ state.tokens.shift();
+ }
+ return (quote === '`' || quote === ')' ? 'quote' : 'string');
+ };
+ };
+
+ var tokenDollar = function(stream, state) {
+ if (state.tokens.length > 1) stream.eat('$');
+ var ch = stream.next(), hungry = /\w/;
+ if (ch === '{') hungry = /[^}]/;
+ if (ch === '(') {
+ state.tokens[0] = tokenString(')');
+ return tokenize(stream, state);
+ }
+ if (!/\d/.test(ch)) {
+ stream.eatWhile(hungry);
+ stream.eat('}');
+ }
+ state.tokens.shift();
+ return 'def';
+ };
+
+ function tokenize(stream, state) {
+ return (state.tokens[0] || tokenBase) (stream, state);
+ };
+
+ return {
+ startState: function() {return {tokens:[]};},
+ token: function(stream, state) {
+ return tokenize(stream, state);
+ },
+ lineComment: '#',
+ fold: "brace"
+ };
+});
+
+CodeMirror.defineMIME('text/x-sh', 'shell');
+
+});
diff --git a/public/vendor/codemirror/mode/shell/test.js b/public/vendor/codemirror/mode/shell/test.js
new file mode 100755
index 00000000..a413b5a4
--- /dev/null
+++ b/public/vendor/codemirror/mode/shell/test.js
@@ -0,0 +1,58 @@
+// CodeMirror, copyright (c) by Marijn Haverbeke and others
+// Distributed under an MIT license: http://codemirror.net/LICENSE
+
+(function() {
+ var mode = CodeMirror.getMode({}, "shell");
+ function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
+
+ MT("var",
+ "text [def $var] text");
+ MT("varBraces",
+ "text[def ${var}]text");
+ MT("varVar",
+ "text [def $a$b] text");
+ MT("varBracesVarBraces",
+ "text[def ${a}${b}]text");
+
+ MT("singleQuotedVar",
+ "[string 'text $var text']");
+ MT("singleQuotedVarBraces",
+ "[string 'text ${var} text']");
+
+ MT("doubleQuotedVar",
+ '[string "text ][def $var][string text"]');
+ MT("doubleQuotedVarBraces",
+ '[string "text][def ${var}][string text"]');
+ MT("doubleQuotedVarPunct",
+ '[string "text ][def $@][string text"]');
+ MT("doubleQuotedVarVar",
+ '[string "][def $a$b][string "]');
+ MT("doubleQuotedVarBracesVarBraces",
+ '[string "][def ${a}${b}][string "]');
+
+ MT("notAString",
+ "text\\'text");
+ MT("escapes",
+ "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)");
+
+ MT("subshell",
+ "[builtin echo] [quote $(whoami)] s log, stardate [quote `date`].");
+ MT("doubleQuotedSubshell",
+ "[builtin echo] [string \"][quote $(whoami)][string 's log, stardate `date`.\"]");
+
+ MT("hashbang",
+ "[meta #!/bin/bash]");
+ MT("comment",
+ "text [comment # Blurb]");
+
+ MT("numbers",
+ "[number 0] [number 1] [number 2]");
+ MT("keywords",
+ "[keyword while] [atom true]; [keyword do]",
+ " [builtin sleep] [number 3]",
+ "[keyword done]");
+ MT("options",
+ "[builtin ls] [attribute -l] [attribute --human-readable]");
+ MT("operator",
+ "[def var][operator =]value");
+})();
--
cgit v1.2.3