maglev-webtools 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. data/LICENSE.txt +25 -0
  2. data/README.rdoc +121 -0
  3. data/bin/webtools +15 -0
  4. data/lib/web_tools/#debugger.rb# +212 -0
  5. data/lib/web_tools/browser.rb +45 -0
  6. data/lib/web_tools/debugger.rb +219 -0
  7. data/lib/web_tools/info.rb +29 -0
  8. data/lib/web_tools/middleware/debugger.rb +118 -0
  9. data/lib/web_tools/support/app_model.rb +117 -0
  10. data/lib/web_tools/support/code_browser.rb +109 -0
  11. data/lib/web_tools/support/ruby.rb +132 -0
  12. data/lib/web_tools/support/service_helper.rb +22 -0
  13. data/lib/web_tools/support/smalltalk_extensions.rb +65 -0
  14. data/lib/web_tools/support/smalltalk_tools.rb +16 -0
  15. data/lib/web_tools/ui.rb +67 -0
  16. data/lib/web_tools.rb +10 -0
  17. data/public/images/favicon.ico +0 -0
  18. data/public/javascript/CodeMirror/LICENSE +23 -0
  19. data/public/javascript/CodeMirror/css/Smalltalk.css +34 -0
  20. data/public/javascript/CodeMirror/js/codemirror.js +582 -0
  21. data/public/javascript/CodeMirror/js/editor.js +1671 -0
  22. data/public/javascript/CodeMirror/js/highlight.js +68 -0
  23. data/public/javascript/CodeMirror/js/parseSmalltalk.js +126 -0
  24. data/public/javascript/CodeMirror/js/parsedummy.js +32 -0
  25. data/public/javascript/CodeMirror/js/select.js +699 -0
  26. data/public/javascript/CodeMirror/js/stringstream.js +159 -0
  27. data/public/javascript/CodeMirror/js/tokenize.js +57 -0
  28. data/public/javascript/CodeMirror/js/undo.js +413 -0
  29. data/public/javascript/CodeMirror/js/util.js +133 -0
  30. data/public/javascript/CodeMirror/testSmalltalkParser.html +116 -0
  31. data/public/javascript/ace/ace-uncompressed.js +17299 -0
  32. data/public/javascript/ace/ace.js +1 -0
  33. data/public/javascript/ace/keybinding-emacs.js +1 -0
  34. data/public/javascript/ace/keybinding-vim.js +1 -0
  35. data/public/javascript/ace/mode-c_cpp.js +1 -0
  36. data/public/javascript/ace/mode-clojure.js +1 -0
  37. data/public/javascript/ace/mode-coffee.js +1 -0
  38. data/public/javascript/ace/mode-csharp.js +1 -0
  39. data/public/javascript/ace/mode-css.js +1 -0
  40. data/public/javascript/ace/mode-groovy.js +1 -0
  41. data/public/javascript/ace/mode-html.js +1 -0
  42. data/public/javascript/ace/mode-java.js +1 -0
  43. data/public/javascript/ace/mode-javascript.js +1 -0
  44. data/public/javascript/ace/mode-json.js +1 -0
  45. data/public/javascript/ace/mode-lua.js +1 -0
  46. data/public/javascript/ace/mode-markdown.js +1 -0
  47. data/public/javascript/ace/mode-ocaml.js +1 -0
  48. data/public/javascript/ace/mode-perl.js +1 -0
  49. data/public/javascript/ace/mode-php.js +1 -0
  50. data/public/javascript/ace/mode-python.js +1 -0
  51. data/public/javascript/ace/mode-ruby.js +1 -0
  52. data/public/javascript/ace/mode-scad.js +1 -0
  53. data/public/javascript/ace/mode-scala.js +1 -0
  54. data/public/javascript/ace/mode-scss.js +1 -0
  55. data/public/javascript/ace/mode-svg.js +1 -0
  56. data/public/javascript/ace/mode-textile.js +1 -0
  57. data/public/javascript/ace/mode-xml.js +1 -0
  58. data/public/javascript/ace/theme-clouds.js +1 -0
  59. data/public/javascript/ace/theme-clouds_midnight.js +1 -0
  60. data/public/javascript/ace/theme-cobalt.js +1 -0
  61. data/public/javascript/ace/theme-crimson_editor.js +1 -0
  62. data/public/javascript/ace/theme-dawn.js +1 -0
  63. data/public/javascript/ace/theme-eclipse.js +1 -0
  64. data/public/javascript/ace/theme-idle_fingers.js +1 -0
  65. data/public/javascript/ace/theme-kr_theme.js +1 -0
  66. data/public/javascript/ace/theme-merbivore.js +1 -0
  67. data/public/javascript/ace/theme-merbivore_soft.js +1 -0
  68. data/public/javascript/ace/theme-mono_industrial.js +1 -0
  69. data/public/javascript/ace/theme-monokai.js +1 -0
  70. data/public/javascript/ace/theme-pastel_on_dark.js +1 -0
  71. data/public/javascript/ace/theme-solarized_dark.js +1 -0
  72. data/public/javascript/ace/theme-solarized_light.js +1 -0
  73. data/public/javascript/ace/theme-textmate.js +1 -0
  74. data/public/javascript/ace/theme-twilight.js +1 -0
  75. data/public/javascript/ace/theme-vibrant_ink.js +1 -0
  76. data/public/javascript/ace/worker-coffee.js +1 -0
  77. data/public/javascript/ace/worker-css.js +1 -0
  78. data/public/javascript/ace/worker-javascript.js +1 -0
  79. data/public/javascript/webtools/#debugger.coffee# +253 -0
  80. data/public/javascript/webtools/browser.js +260 -0
  81. data/public/javascript/webtools/debugger.coffee +286 -0
  82. data/public/javascript/webtools/debugger.js +366 -0
  83. data/public/javascript/webtools/sessions.coffee +17 -0
  84. data/public/javascript/webtools/sessions.js +27 -0
  85. data/public/javascript/webtools/version.coffee +14 -0
  86. data/public/javascript/webtools/version.js +20 -0
  87. data/public/stylesheets/base/images/ui-anim_basic_16x16.gif +0 -0
  88. data/public/stylesheets/base/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  89. data/public/stylesheets/base/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  90. data/public/stylesheets/base/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  91. data/public/stylesheets/base/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  92. data/public/stylesheets/base/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  93. data/public/stylesheets/base/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  94. data/public/stylesheets/base/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  95. data/public/stylesheets/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  96. data/public/stylesheets/base/images/ui-icons_222222_256x240.png +0 -0
  97. data/public/stylesheets/base/images/ui-icons_2e83ff_256x240.png +0 -0
  98. data/public/stylesheets/base/images/ui-icons_454545_256x240.png +0 -0
  99. data/public/stylesheets/base/images/ui-icons_888888_256x240.png +0 -0
  100. data/public/stylesheets/base/images/ui-icons_cd0a0a_256x240.png +0 -0
  101. data/public/stylesheets/base/jquery.ui.accordion.css +12 -0
  102. data/public/stylesheets/base/jquery.ui.all.css +2 -0
  103. data/public/stylesheets/base/jquery.ui.autocomplete.css +39 -0
  104. data/public/stylesheets/base/jquery.ui.base.css +11 -0
  105. data/public/stylesheets/base/jquery.ui.button.css +35 -0
  106. data/public/stylesheets/base/jquery.ui.core.css +37 -0
  107. data/public/stylesheets/base/jquery.ui.datepicker.css +61 -0
  108. data/public/stylesheets/base/jquery.ui.dialog.css +13 -0
  109. data/public/stylesheets/base/jquery.ui.progressbar.css +4 -0
  110. data/public/stylesheets/base/jquery.ui.resizable.css +13 -0
  111. data/public/stylesheets/base/jquery.ui.selectable.css +3 -0
  112. data/public/stylesheets/base/jquery.ui.slider.css +17 -0
  113. data/public/stylesheets/base/jquery.ui.tabs.css +11 -0
  114. data/public/stylesheets/base/jquery.ui.theme.css +247 -0
  115. data/public/stylesheets/jquery.contextMenu.css +62 -0
  116. data/public/stylesheets/reset.css +18 -0
  117. data/public/stylesheets/webtools.css +53 -0
  118. data/public/test.html +47 -0
  119. data/views/browser.rhtml +63 -0
  120. data/views/debugger.rhtml +59 -0
  121. data/views/index.rhtml +8 -0
  122. data/views/layout.rhtml +24 -0
  123. data/views/sessions.rhtml +12 -0
  124. data/views/version.rhtml +10 -0
  125. 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
+ })();