maglev-webtools 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE.txt +25 -0
- data/README.rdoc +121 -0
- data/bin/webtools +15 -0
- data/lib/web_tools/#debugger.rb# +212 -0
- data/lib/web_tools/browser.rb +45 -0
- data/lib/web_tools/debugger.rb +219 -0
- data/lib/web_tools/info.rb +29 -0
- data/lib/web_tools/middleware/debugger.rb +118 -0
- data/lib/web_tools/support/app_model.rb +117 -0
- data/lib/web_tools/support/code_browser.rb +109 -0
- data/lib/web_tools/support/ruby.rb +132 -0
- data/lib/web_tools/support/service_helper.rb +22 -0
- data/lib/web_tools/support/smalltalk_extensions.rb +65 -0
- data/lib/web_tools/support/smalltalk_tools.rb +16 -0
- data/lib/web_tools/ui.rb +67 -0
- data/lib/web_tools.rb +10 -0
- data/public/images/favicon.ico +0 -0
- data/public/javascript/CodeMirror/LICENSE +23 -0
- data/public/javascript/CodeMirror/css/Smalltalk.css +34 -0
- data/public/javascript/CodeMirror/js/codemirror.js +582 -0
- data/public/javascript/CodeMirror/js/editor.js +1671 -0
- data/public/javascript/CodeMirror/js/highlight.js +68 -0
- data/public/javascript/CodeMirror/js/parseSmalltalk.js +126 -0
- data/public/javascript/CodeMirror/js/parsedummy.js +32 -0
- data/public/javascript/CodeMirror/js/select.js +699 -0
- data/public/javascript/CodeMirror/js/stringstream.js +159 -0
- data/public/javascript/CodeMirror/js/tokenize.js +57 -0
- data/public/javascript/CodeMirror/js/undo.js +413 -0
- data/public/javascript/CodeMirror/js/util.js +133 -0
- data/public/javascript/CodeMirror/testSmalltalkParser.html +116 -0
- data/public/javascript/ace/ace-uncompressed.js +17299 -0
- data/public/javascript/ace/ace.js +1 -0
- data/public/javascript/ace/keybinding-emacs.js +1 -0
- data/public/javascript/ace/keybinding-vim.js +1 -0
- data/public/javascript/ace/mode-c_cpp.js +1 -0
- data/public/javascript/ace/mode-clojure.js +1 -0
- data/public/javascript/ace/mode-coffee.js +1 -0
- data/public/javascript/ace/mode-csharp.js +1 -0
- data/public/javascript/ace/mode-css.js +1 -0
- data/public/javascript/ace/mode-groovy.js +1 -0
- data/public/javascript/ace/mode-html.js +1 -0
- data/public/javascript/ace/mode-java.js +1 -0
- data/public/javascript/ace/mode-javascript.js +1 -0
- data/public/javascript/ace/mode-json.js +1 -0
- data/public/javascript/ace/mode-lua.js +1 -0
- data/public/javascript/ace/mode-markdown.js +1 -0
- data/public/javascript/ace/mode-ocaml.js +1 -0
- data/public/javascript/ace/mode-perl.js +1 -0
- data/public/javascript/ace/mode-php.js +1 -0
- data/public/javascript/ace/mode-python.js +1 -0
- data/public/javascript/ace/mode-ruby.js +1 -0
- data/public/javascript/ace/mode-scad.js +1 -0
- data/public/javascript/ace/mode-scala.js +1 -0
- data/public/javascript/ace/mode-scss.js +1 -0
- data/public/javascript/ace/mode-svg.js +1 -0
- data/public/javascript/ace/mode-textile.js +1 -0
- data/public/javascript/ace/mode-xml.js +1 -0
- data/public/javascript/ace/theme-clouds.js +1 -0
- data/public/javascript/ace/theme-clouds_midnight.js +1 -0
- data/public/javascript/ace/theme-cobalt.js +1 -0
- data/public/javascript/ace/theme-crimson_editor.js +1 -0
- data/public/javascript/ace/theme-dawn.js +1 -0
- data/public/javascript/ace/theme-eclipse.js +1 -0
- data/public/javascript/ace/theme-idle_fingers.js +1 -0
- data/public/javascript/ace/theme-kr_theme.js +1 -0
- data/public/javascript/ace/theme-merbivore.js +1 -0
- data/public/javascript/ace/theme-merbivore_soft.js +1 -0
- data/public/javascript/ace/theme-mono_industrial.js +1 -0
- data/public/javascript/ace/theme-monokai.js +1 -0
- data/public/javascript/ace/theme-pastel_on_dark.js +1 -0
- data/public/javascript/ace/theme-solarized_dark.js +1 -0
- data/public/javascript/ace/theme-solarized_light.js +1 -0
- data/public/javascript/ace/theme-textmate.js +1 -0
- data/public/javascript/ace/theme-twilight.js +1 -0
- data/public/javascript/ace/theme-vibrant_ink.js +1 -0
- data/public/javascript/ace/worker-coffee.js +1 -0
- data/public/javascript/ace/worker-css.js +1 -0
- data/public/javascript/ace/worker-javascript.js +1 -0
- data/public/javascript/webtools/#debugger.coffee# +253 -0
- data/public/javascript/webtools/browser.js +260 -0
- data/public/javascript/webtools/debugger.coffee +286 -0
- data/public/javascript/webtools/debugger.js +366 -0
- data/public/javascript/webtools/sessions.coffee +17 -0
- data/public/javascript/webtools/sessions.js +27 -0
- data/public/javascript/webtools/version.coffee +14 -0
- data/public/javascript/webtools/version.js +20 -0
- data/public/stylesheets/base/images/ui-anim_basic_16x16.gif +0 -0
- data/public/stylesheets/base/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/public/stylesheets/base/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/public/stylesheets/base/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/public/stylesheets/base/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/public/stylesheets/base/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/public/stylesheets/base/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/public/stylesheets/base/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/stylesheets/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/public/stylesheets/base/images/ui-icons_222222_256x240.png +0 -0
- data/public/stylesheets/base/images/ui-icons_2e83ff_256x240.png +0 -0
- data/public/stylesheets/base/images/ui-icons_454545_256x240.png +0 -0
- data/public/stylesheets/base/images/ui-icons_888888_256x240.png +0 -0
- data/public/stylesheets/base/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/stylesheets/base/jquery.ui.accordion.css +12 -0
- data/public/stylesheets/base/jquery.ui.all.css +2 -0
- data/public/stylesheets/base/jquery.ui.autocomplete.css +39 -0
- data/public/stylesheets/base/jquery.ui.base.css +11 -0
- data/public/stylesheets/base/jquery.ui.button.css +35 -0
- data/public/stylesheets/base/jquery.ui.core.css +37 -0
- data/public/stylesheets/base/jquery.ui.datepicker.css +61 -0
- data/public/stylesheets/base/jquery.ui.dialog.css +13 -0
- data/public/stylesheets/base/jquery.ui.progressbar.css +4 -0
- data/public/stylesheets/base/jquery.ui.resizable.css +13 -0
- data/public/stylesheets/base/jquery.ui.selectable.css +3 -0
- data/public/stylesheets/base/jquery.ui.slider.css +17 -0
- data/public/stylesheets/base/jquery.ui.tabs.css +11 -0
- data/public/stylesheets/base/jquery.ui.theme.css +247 -0
- data/public/stylesheets/jquery.contextMenu.css +62 -0
- data/public/stylesheets/reset.css +18 -0
- data/public/stylesheets/webtools.css +53 -0
- data/public/test.html +47 -0
- data/views/browser.rhtml +63 -0
- data/views/debugger.rhtml +59 -0
- data/views/index.rhtml +8 -0
- data/views/layout.rhtml +24 -0
- data/views/sessions.rhtml +12 -0
- data/views/version.rhtml +10 -0
- metadata +316 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Minimal framing needed to use CodeMirror-style parsers to highlight
|
|
2
|
+
// code. Load this along with tokenize.js, stringstream.js, and your
|
|
3
|
+
// parser. Then call highlightText, passing a string as the first
|
|
4
|
+
// argument, and as the second argument either a callback function
|
|
5
|
+
// that will be called with an array of SPAN nodes for every line in
|
|
6
|
+
// the code, or a DOM node to which to append these spans, and
|
|
7
|
+
// optionally (not needed if you only loaded one parser) a parser
|
|
8
|
+
// object.
|
|
9
|
+
|
|
10
|
+
// Stuff from util.js that the parsers are using.
|
|
11
|
+
var StopIteration = {toString: function() {return "StopIteration"}};
|
|
12
|
+
|
|
13
|
+
var Editor = {};
|
|
14
|
+
var indentUnit = 2;
|
|
15
|
+
|
|
16
|
+
(function(){
|
|
17
|
+
function normaliseString(string) {
|
|
18
|
+
var tab = "";
|
|
19
|
+
for (var i = 0; i < indentUnit; i++) tab += " ";
|
|
20
|
+
|
|
21
|
+
string = string.replace(/\t/g, tab).replace(/\u00a0/g, " ").replace(/\r\n?/g, "\n");
|
|
22
|
+
var pos = 0, parts = [], lines = string.split("\n");
|
|
23
|
+
for (var line = 0; line < lines.length; line++) {
|
|
24
|
+
if (line != 0) parts.push("\n");
|
|
25
|
+
parts.push(lines[line]);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
next: function() {
|
|
30
|
+
if (pos < parts.length) return parts[pos++];
|
|
31
|
+
else throw StopIteration;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
window.highlightText = function(string, callback, parser) {
|
|
37
|
+
parser = (parser || Editor.Parser).make(stringStream(normaliseString(string)));
|
|
38
|
+
var line = [];
|
|
39
|
+
if (callback.nodeType == 1) {
|
|
40
|
+
var node = callback;
|
|
41
|
+
callback = function(line) {
|
|
42
|
+
for (var i = 0; i < line.length; i++)
|
|
43
|
+
node.appendChild(line[i]);
|
|
44
|
+
node.appendChild(document.createElement("br"));
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
while (true) {
|
|
50
|
+
var token = parser.next();
|
|
51
|
+
if (token.value == "\n") {
|
|
52
|
+
callback(line);
|
|
53
|
+
line = [];
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
var span = document.createElement("span");
|
|
57
|
+
span.className = token.style;
|
|
58
|
+
span.appendChild(document.createTextNode(token.value));
|
|
59
|
+
line.push(span);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
if (e != StopIteration) throw e;
|
|
65
|
+
}
|
|
66
|
+
if (line.length) callback(line);
|
|
67
|
+
}
|
|
68
|
+
})();
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/* Simple parser for Smalltalk */
|
|
2
|
+
|
|
3
|
+
var SmalltalkParser = (function() {
|
|
4
|
+
var tokenizeSmalltalk = (function() {
|
|
5
|
+
var identifierTest = /[A-Za-z0-9_]/;
|
|
6
|
+
function normal(source, setState) {
|
|
7
|
+
var char = source.next();
|
|
8
|
+
if (char == ' ' || char == '\t') {
|
|
9
|
+
return 'whitespace';
|
|
10
|
+
}
|
|
11
|
+
if (char == '\n') {
|
|
12
|
+
return 'newline';
|
|
13
|
+
}
|
|
14
|
+
if (/[A-Za-z]/.test(char) || (char == '_' && identifierTest.test(source.peek()))) {
|
|
15
|
+
source.nextWhileMatches(identifierTest);
|
|
16
|
+
if (!source.endOfLine() && source.peek() == ':') {
|
|
17
|
+
source.next();
|
|
18
|
+
return 'st-keyword';
|
|
19
|
+
}
|
|
20
|
+
return 'st-identifier';
|
|
21
|
+
}
|
|
22
|
+
if (char == '$') {
|
|
23
|
+
if (source.endOfLine()) return 'st-error';
|
|
24
|
+
source.next();
|
|
25
|
+
return 'st-character';
|
|
26
|
+
}
|
|
27
|
+
if (char == '^') {
|
|
28
|
+
return 'st-return';
|
|
29
|
+
}
|
|
30
|
+
else if (char == "'") {
|
|
31
|
+
setState(inString("'", 'st-string'));
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
else if (char == '"') {
|
|
35
|
+
setState(inString('"', 'st-comment'));
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
else if (char == '#') {
|
|
39
|
+
if (source.endOfLine()) return 'st-error';
|
|
40
|
+
char = source.next();
|
|
41
|
+
if (char == "'") {
|
|
42
|
+
setState(inString("'", 'st-symbol'));
|
|
43
|
+
return null;
|
|
44
|
+
} else {
|
|
45
|
+
if (/[A-Za-z]/.test(char) || (char == '_' && identifierTest.test(source.peek()))) {
|
|
46
|
+
source.nextWhileMatches(/[A-Za-z0-9_:]/);
|
|
47
|
+
return 'st-symbol';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return 'st-error';
|
|
51
|
+
}
|
|
52
|
+
return 'st-other';
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function inString(endChar, styleClass) {
|
|
56
|
+
return function(source, setState) {
|
|
57
|
+
while (true) {
|
|
58
|
+
if (source.endOfLine())
|
|
59
|
+
return styleClass;
|
|
60
|
+
if (source.next() == endChar) {
|
|
61
|
+
if (!source.endOfLine() && source.peek() == endChar)
|
|
62
|
+
source.next();
|
|
63
|
+
else
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
setState(normal);
|
|
68
|
+
return styleClass;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return function(source, startState) {
|
|
72
|
+
return tokenizer(source, startState || normal);
|
|
73
|
+
};
|
|
74
|
+
})();
|
|
75
|
+
function parseSmalltalk(source, basecolumn) {
|
|
76
|
+
var tokens = tokenizeSmalltalk(source);
|
|
77
|
+
var iter = {
|
|
78
|
+
next: function() {
|
|
79
|
+
var token = tokens.next()
|
|
80
|
+
, style = token.style
|
|
81
|
+
, content = token.content
|
|
82
|
+
;
|
|
83
|
+
if (style == 'newline') {
|
|
84
|
+
token['indentation'] = function(text, current, direction) { };
|
|
85
|
+
return token;
|
|
86
|
+
}
|
|
87
|
+
if (style == 'st-identifier') {
|
|
88
|
+
if (content == 'true' || content == 'false') {
|
|
89
|
+
token.style = 'st-boolean';
|
|
90
|
+
return token;
|
|
91
|
+
}
|
|
92
|
+
if (content == 'self') {
|
|
93
|
+
token.style = 'st-self';
|
|
94
|
+
return token;
|
|
95
|
+
}
|
|
96
|
+
if (content == 'super') {
|
|
97
|
+
token.style = 'st-super';
|
|
98
|
+
return token;
|
|
99
|
+
}
|
|
100
|
+
if (content == 'nil') {
|
|
101
|
+
token.style = 'st-nil';
|
|
102
|
+
return token;
|
|
103
|
+
}
|
|
104
|
+
if (content.substring(0,1) == content.substring(0,1).toUpperCase()) {
|
|
105
|
+
token.style = 'st-global';
|
|
106
|
+
return token;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return token;
|
|
110
|
+
},
|
|
111
|
+
copy: function() {
|
|
112
|
+
var _tokenState = tokens.state;
|
|
113
|
+
return function(source) {
|
|
114
|
+
tokens = tokenizeSmalltalk(source, _tokenState);
|
|
115
|
+
return iter;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
return iter;
|
|
120
|
+
}
|
|
121
|
+
return { make: parseSmalltalk };
|
|
122
|
+
})();
|
|
123
|
+
|
|
124
|
+
if (Editor) {
|
|
125
|
+
Editor.Parser = SmalltalkParser;
|
|
126
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
var DummyParser = Editor.Parser = (function() {
|
|
2
|
+
function tokenizeDummy(source) {
|
|
3
|
+
while (!source.endOfLine()) source.next();
|
|
4
|
+
return "text";
|
|
5
|
+
}
|
|
6
|
+
function parseDummy(source) {
|
|
7
|
+
function indentTo(n) {return function() {return n;}}
|
|
8
|
+
source = tokenizer(source, tokenizeDummy);
|
|
9
|
+
var space = 0;
|
|
10
|
+
|
|
11
|
+
var iter = {
|
|
12
|
+
next: function() {
|
|
13
|
+
var tok = source.next();
|
|
14
|
+
if (tok.type == "whitespace") {
|
|
15
|
+
if (tok.value == "\n") tok.indentation = indentTo(space);
|
|
16
|
+
else space = tok.value.length;
|
|
17
|
+
}
|
|
18
|
+
return tok;
|
|
19
|
+
},
|
|
20
|
+
copy: function() {
|
|
21
|
+
var _space = space;
|
|
22
|
+
return function(_source) {
|
|
23
|
+
space = _space;
|
|
24
|
+
source = tokenizer(_source, tokenizeDummy);
|
|
25
|
+
return iter;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
return iter;
|
|
30
|
+
}
|
|
31
|
+
return {make: parseDummy};
|
|
32
|
+
})();
|