PluginProbe
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor / 2.0.2
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor v2.0.2
4.0.2 4.0.1 4.0.0 3.16.6 3.16.5 3.16.4 3.16.3 3.16.2 3.16.1 3.16.0 3.15.9 3.9.9 3.9.5 3.9.6 3.9.7 3.9.8 1.1.7 1.1.8 1.1.9 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 All 340 releases
profile-builder / assets / lib / codemirror / addon / runmode / runmode.node.js

runmode.node.js in User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor 2.0.2, at assets/lib/codemirror/addon/runmode/runmode.node.js

104 lines 3.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* Just enough of CodeMirror to run runMode under node.js */
2
3 function splitLines(string){ return string.split(/\r?\n|\r/); };
4
5 function StringStream(string) {
6 this.pos = this.start = 0;
7 this.string = string;
8 }
9 StringStream.prototype = {
10 eol: function() {return this.pos >= this.string.length;},
11 sol: function() {return this.pos == 0;},
12 peek: function() {return this.string.charAt(this.pos) || null;},
13 next: function() {
14 if (this.pos < this.string.length)
15 return this.string.charAt(this.pos++);
16 },
17 eat: function(match) {
18 var ch = this.string.charAt(this.pos);
19 if (typeof match == "string") var ok = ch == match;
20 else var ok = ch && (match.test ? match.test(ch) : match(ch));
21 if (ok) {++this.pos; return ch;}
22 },
23 eatWhile: function(match) {
24 var start = this.pos;
25 while (this.eat(match)){}
26 return this.pos > start;
27 },
28 eatSpace: function() {
29 var start = this.pos;
30 while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos;
31 return this.pos > start;
32 },
33 skipToEnd: function() {this.pos = this.string.length;},
34 skipTo: function(ch) {
35 var found = this.string.indexOf(ch, this.pos);
36 if (found > -1) {this.pos = found; return true;}
37 },
38 backUp: function(n) {this.pos -= n;},
39 column: function() {return this.start;},
40 indentation: function() {return 0;},
41 match: function(pattern, consume, caseInsensitive) {
42 if (typeof pattern == "string") {
43 var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;};
44 var substr = this.string.substr(this.pos, pattern.length);
45 if (cased(substr) == cased(pattern)) {
46 if (consume !== false) this.pos += pattern.length;
47 return true;
48 }
49 } else {
50 var match = this.string.slice(this.pos).match(pattern);
51 if (match && match.index > 0) return null;
52 if (match && consume !== false) this.pos += match[0].length;
53 return match;
54 }
55 },
56 current: function(){return this.string.slice(this.start, this.pos);}
57 };
58 exports.StringStream = StringStream;
59
60 exports.startState = function(mode, a1, a2) {
61 return mode.startState ? mode.startState(a1, a2) : true;
62 };
63
64 var modes = exports.modes = {}, mimeModes = exports.mimeModes = {};
65 exports.defineMode = function(name, mode) {
66 if (arguments.length > 2) {
67 mode.dependencies = [];
68 for (var i = 2; i < arguments.length; ++i) mode.dependencies.push(arguments[i]);
69 }
70 modes[name] = mode;
71 };
72 exports.defineMIME = function(mime, spec) { mimeModes[mime] = spec; };
73
74 exports.defineMode("null", function() {
75 return {token: function(stream) {stream.skipToEnd();}};
76 });
77 exports.defineMIME("text/plain", "null");
78
79 exports.getMode = function(options, spec) {
80 if (typeof spec == "string" && mimeModes.hasOwnProperty(spec))
81 spec = mimeModes[spec];
82 if (typeof spec == "string")
83 var mname = spec, config = {};
84 else if (spec != null)
85 var mname = spec.name, config = spec;
86 var mfactory = modes[mname];
87 if (!mfactory) throw new Error("Unknown mode: " + spec);
88 return mfactory(options, config || {});
89 };
90
91 exports.runMode = function(string, modespec, callback) {
92 var mode = exports.getMode({indentUnit: 2}, modespec);
93 var lines = splitLines(string), state = exports.startState(mode);
94 for (var i = 0, e = lines.length; i < e; ++i) {
95 if (i) callback("\n");
96 var stream = new exports.StringStream(lines[i]);
97 while (!stream.eol()) {
98 var style = mode.token(stream, state);
99 callback(stream.current(), style, i, stream.start, state);
100 stream.start = stream.pos;
101 }
102 }
103 };
104