superchris-rubyjs 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/README +131 -0
  2. data/Rakefile +65 -0
  3. data/bin/rubyjs +144 -0
  4. data/rubyjs.gemspec +112 -0
  5. data/src/rubyjs.rb +3 -0
  6. data/src/rubyjs/code_generator.rb +474 -0
  7. data/src/rubyjs/compiler.rb +2061 -0
  8. data/src/rubyjs/debug_name_generator.rb +95 -0
  9. data/src/rubyjs/encoder.rb +171 -0
  10. data/src/rubyjs/eval_into.rb +59 -0
  11. data/src/rubyjs/lib/core.rb +1016 -0
  12. data/src/rubyjs/lib/dom_element.rb +66 -0
  13. data/src/rubyjs/lib/json.rb +101 -0
  14. data/src/rubyjs/lib/microunit.rb +188 -0
  15. data/src/rubyjs/model.rb +293 -0
  16. data/src/rubyjs/name_generator.rb +71 -0
  17. data/src/rwt/AbsolutePanel.rb +161 -0
  18. data/src/rwt/DOM.Konqueror.rb +89 -0
  19. data/src/rwt/DOM.Opera.rb +65 -0
  20. data/src/rwt/DOM.rb +1044 -0
  21. data/src/rwt/Event.Opera.rb +35 -0
  22. data/src/rwt/Event.rb +429 -0
  23. data/src/rwt/HTTPRequest.IE6.rb +5 -0
  24. data/src/rwt/HTTPRequest.rb +74 -0
  25. data/src/rwt/Label.rb +164 -0
  26. data/src/rwt/Panel.rb +90 -0
  27. data/src/rwt/RootPanel.rb +16 -0
  28. data/src/rwt/UIObject.rb +495 -0
  29. data/src/rwt/Widget.rb +193 -0
  30. data/src/rwt/ported-from/AbsolutePanel.java +158 -0
  31. data/src/rwt/ported-from/DOM.java +571 -0
  32. data/src/rwt/ported-from/DOMImpl.java +426 -0
  33. data/src/rwt/ported-from/DOMImplOpera.java +82 -0
  34. data/src/rwt/ported-from/DOMImplStandard.java +234 -0
  35. data/src/rwt/ported-from/HTTPRequest.java +81 -0
  36. data/src/rwt/ported-from/HTTPRequestImpl.java +103 -0
  37. data/src/rwt/ported-from/Label.java +163 -0
  38. data/src/rwt/ported-from/Panel.java +99 -0
  39. data/src/rwt/ported-from/UIObject.java +614 -0
  40. data/src/rwt/ported-from/Widget.java +221 -0
  41. data/test/benchmark/bm_vm1_block.rb +15 -0
  42. data/test/benchmark/bm_vm1_const.rb +13 -0
  43. data/test/benchmark/bm_vm1_ensure.rb +15 -0
  44. data/test/benchmark/common.rb +5 -0
  45. data/test/benchmark/params.yaml +7 -0
  46. data/test/common.Browser.rb +13 -0
  47. data/test/common.rb +8 -0
  48. data/test/gen_browser_test_suite.rb +129 -0
  49. data/test/gen_test_suite.rb +41 -0
  50. data/test/run_benchs.rb +58 -0
  51. data/test/run_tests.rb +22 -0
  52. data/test/test_args.rb +24 -0
  53. data/test/test_array.rb +22 -0
  54. data/test/test_case.rb +35 -0
  55. data/test/test_class.rb +55 -0
  56. data/test/test_eql.rb +9 -0
  57. data/test/test_exception.rb +61 -0
  58. data/test/test_expr.rb +12 -0
  59. data/test/test_hash.rb +29 -0
  60. data/test/test_hot_ruby.rb +146 -0
  61. data/test/test_if.rb +28 -0
  62. data/test/test_insertion_sort.rb +25 -0
  63. data/test/test_inspect.rb +10 -0
  64. data/test/test_lebewesen.rb +39 -0
  65. data/test/test_massign.rb +66 -0
  66. data/test/test_new.rb +12 -0
  67. data/test/test_range.rb +70 -0
  68. data/test/test_regexp.rb +22 -0
  69. data/test/test_send.rb +65 -0
  70. data/test/test_simple_output.rb +5 -0
  71. data/test/test_splat.rb +21 -0
  72. data/test/test_string.rb +51 -0
  73. data/test/test_test.rb +17 -0
  74. data/test/test_yield.rb +154 -0
  75. data/utils/js/Makefile +9 -0
  76. data/utils/js/RunScript.class +0 -0
  77. data/utils/js/RunScript.java +73 -0
  78. data/utils/js/js.jar +0 -0
  79. data/utils/js/run.sh +3 -0
  80. data/utils/jsc/Makefile +7 -0
  81. data/utils/jsc/README +3 -0
  82. data/utils/jsc/RunScript.c +93 -0
  83. data/utils/jsc/run.sh +15 -0
  84. data/utils/yuicompressor/README +1 -0
  85. data/utils/yuicompressor/yuicompressor-2.2.5.jar +0 -0
  86. metadata +157 -0
@@ -0,0 +1,154 @@
1
+ class TestYield
2
+ def three_times_yield
3
+ yield 1
4
+ yield 2
5
+ yield 3
6
+ end
7
+
8
+ def test_three_times_yield
9
+ puts "three_times_yield"
10
+ three_times_yield {|i| p i }
11
+ puts "--"
12
+ end
13
+
14
+ def three_times_block(&block)
15
+ block.call(1)
16
+ block.call(2)
17
+ block.call(3)
18
+ end
19
+
20
+ def test_three_times_block
21
+ puts "three_times_block"
22
+ three_times_block {|i| p i }
23
+ puts "--"
24
+ end
25
+
26
+ def three_times_indirect(&block)
27
+ three_times_yield(&block)
28
+ three_times_block(&block)
29
+ end
30
+
31
+ def test_three_times_indirect
32
+ puts "three_times_indirect"
33
+ three_times_indirect {|i| p i}
34
+ puts "--"
35
+ end
36
+
37
+ def three_times_yield2
38
+ p yield(1)
39
+ p yield(2)
40
+ p yield(3)
41
+ end
42
+
43
+ def test_three_times_yield2
44
+ puts "three_times_yield2"
45
+ three_times_yield2 {|i|
46
+ if i == 1
47
+ i
48
+ else
49
+ next i+1
50
+ end
51
+ }
52
+ end
53
+
54
+ def loop
55
+ while true
56
+ yield
57
+ end
58
+ p "not reached"
59
+ end
60
+
61
+ def loop2(&block)
62
+ while true
63
+ block.call
64
+ end
65
+ p "not reached"
66
+ end
67
+
68
+ def test_loop
69
+ puts "loop"
70
+ i = 0
71
+ res = loop do
72
+ i += 1
73
+ next if i % 2 == 1
74
+ p i
75
+ break "out", i if i > 8
76
+ end
77
+ p res
78
+ puts "--"
79
+ end
80
+
81
+ def test_loop2
82
+ puts "loop2"
83
+ i = 0
84
+ res = loop2 do
85
+ i += 1
86
+ next if i % 2 == 1
87
+ p i
88
+ break "out", i if i > 8
89
+ end
90
+ p res
91
+ puts "--"
92
+ end
93
+
94
+ def test_while_loop
95
+ puts "while-loop"
96
+ i = 0
97
+ while true
98
+ i += 1
99
+ next if i % 2 == 1
100
+ p i
101
+ break if i > 8
102
+ end
103
+ puts "----"
104
+ while i > 0
105
+ p i
106
+ i -= 1
107
+ end
108
+ puts "--"
109
+ end
110
+
111
+ def return_in_block(&block)
112
+ p "return_in_block before"
113
+ block.call
114
+ p "return_in_block after"
115
+ end
116
+
117
+ def test_return_in_block
118
+ p "before"
119
+ return_in_block { return 4 }
120
+ p "after (NOT)"
121
+ end
122
+
123
+ def test_proc
124
+ p "test_proc"
125
+ a = proc { return 0 }
126
+ p a.call
127
+ a = Proc.new { break 3 }
128
+ p a.call
129
+ end
130
+
131
+ def test
132
+ test_three_times_yield
133
+ test_three_times_block
134
+ test_three_times_indirect
135
+ test_three_times_yield2
136
+ test_loop
137
+ test_loop2
138
+ test_while_loop
139
+
140
+ (proc {||}).call
141
+
142
+ begin
143
+ test_proc
144
+ rescue LocalJumpError => e
145
+ p e
146
+ end
147
+
148
+ p test_return_in_block()
149
+ end
150
+
151
+ def self.main
152
+ new.test
153
+ end
154
+ end
@@ -0,0 +1,9 @@
1
+ JAVA=java
2
+ JAVAC=javac
3
+ CP=./js.jar:.
4
+
5
+ run: RunScript.class
6
+ ${JAVA} -cp ${CP} RunScript
7
+
8
+ RunScript.class: RunScript.java
9
+ ${JAVAC} -cp ${CP} RunScript.java
Binary file
@@ -0,0 +1,73 @@
1
+ /* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2
+ *
3
+ * ***** BEGIN LICENSE BLOCK *****
4
+ * Version: MPL 1.1/GPL 2.0
5
+ *
6
+ * The contents of this file are subject to the Mozilla Public License Version
7
+ * 1.1 (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ * http://www.mozilla.org/MPL/
10
+ *
11
+ * Software distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
+ * for the specific language governing rights and limitations under the
14
+ * License.
15
+ *
16
+ * The Original Code is Rhino code, released
17
+ * May 6, 1998.
18
+ *
19
+ * The Initial Developer of the Original Code is
20
+ * Netscape Communications Corporation.
21
+ * Portions created by the Initial Developer are Copyright (C) 1999
22
+ * the Initial Developer. All Rights Reserved.
23
+ *
24
+ * Contributor(s):
25
+ *
26
+ * Modified by Michael Neumann.
27
+ *
28
+ * Alternatively, the contents of this file may be used under the terms of
29
+ * the GNU General Public License Version 2 or later (the "GPL"), in which
30
+ * case the provisions of the GPL are applicable instead of those above. If
31
+ * you wish to allow use of your version of this file only under the terms of
32
+ * the GPL and not to allow others to use your version of this file under the
33
+ * MPL, indicate your decision by deleting the provisions above and replacing
34
+ * them with the notice and other provisions required by the GPL. If you do
35
+ * not delete the provisions above, a recipient may use your version of this
36
+ * file under either the MPL or the GPL.
37
+ *
38
+ * ***** END LICENSE BLOCK ***** */
39
+
40
+ import org.mozilla.javascript.*;
41
+ import java.io.*;
42
+
43
+ public class RunScript {
44
+ public static void main(String args[]) throws IOException
45
+ {
46
+ Context cx = Context.enter();
47
+ try {
48
+ Scriptable scope = cx.initStandardObjects();
49
+
50
+ // Add a global variable "out" that is a JavaScript reflection
51
+ // of System.out
52
+ Object jsOut = Context.javaToJS(System.out, scope);
53
+ ScriptableObject.putProperty(scope, "out", jsOut);
54
+
55
+ // Read script from stdio into s
56
+ String s = "";
57
+ String line;
58
+ s += "function println(o) { out.println(o); };\n";
59
+ BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
60
+ while ( (line = in.readLine()) != null ) {
61
+ s += line;
62
+ s += "\n";
63
+ }
64
+
65
+ Object result = cx.evaluateString(scope, s, "<cmd>", 1, null);
66
+ //System.err.println(cx.toString(result));
67
+ } finally {
68
+ Context.exit();
69
+ }
70
+ }
71
+
72
+ }
73
+
Binary file
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+ base=`pwd`/`dirname $0`/../..
3
+ java -cp $base/utils/js/js.jar:$base/utils/js RunScript
@@ -0,0 +1,7 @@
1
+ CC=cc
2
+ CFLAGS=-I/usr/local/include
3
+ LDFLAGS=-L/usr/local/lib
4
+ LIBS=-ljs -lm -lpthread
5
+
6
+ RunScript: RunScript.c
7
+ ${CC} ${CFLAGS} ${LDFLAGS} ${LIBS} RunScript.c -o RunScript
@@ -0,0 +1,3 @@
1
+ Requires Spidermonkey
2
+
3
+ http://www.mozilla.org/js/spidermonkey/
@@ -0,0 +1,93 @@
1
+ /*
2
+ *
3
+ * Code mostly taken from:
4
+ *
5
+ * http://www.mozilla.org/js/spidermonkey/tutorial.html
6
+ */
7
+
8
+ #include <stdio.h>
9
+ #include <stdlib.h>
10
+ #include <string.h>
11
+
12
+ #include <fcntl.h>
13
+ #include <unistd.h>
14
+
15
+ #define XP_UNIX
16
+ #include "jsapi.h"
17
+
18
+ static JSBool
19
+ println(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
20
+ {
21
+ /*
22
+ * Look in argv for argc actual parameters, set *rval to return a
23
+ * value to the caller.
24
+ */
25
+ if (argc == 1)
26
+ {
27
+ JSString *str = JS_ValueToString(cx, argv[0]);
28
+ printf("%s\n", JS_GetStringBytes(str));
29
+ *rval = JS_TRUE;
30
+ }
31
+ else
32
+ {
33
+ *rval = JS_FALSE;
34
+ }
35
+ }
36
+
37
+ int main(int argc, char** argv)
38
+ {
39
+ JSRuntime *rt;
40
+ JSContext *cx;
41
+ JSObject *global;
42
+ JSClass global_class = {
43
+ "global",0,
44
+ JS_PropertyStub,JS_PropertyStub,JS_PropertyStub,JS_PropertyStub,
45
+ JS_EnumerateStub,JS_ResolveStub,JS_ConvertStub,JS_FinalizeStub
46
+ };
47
+
48
+ /*
49
+ * You always need:
50
+ * a runtime per process,
51
+ * a context per thread,
52
+ * a global object per context,
53
+ * standard classes (e.g. Date).
54
+ */
55
+ rt = JS_NewRuntime(0x100000);
56
+ cx = JS_NewContext(rt, 0x1000);
57
+ global = JS_NewObject(cx, &global_class, NULL, NULL);
58
+ JS_InitStandardClasses(cx, global);
59
+
60
+ /*
61
+ * Read in file
62
+ */
63
+
64
+ if (argc != 2) return -1;
65
+
66
+ char *filename = argv[1];
67
+
68
+ char *script;
69
+ int len;
70
+ int fh;
71
+
72
+ fh = open(filename, O_RDONLY);
73
+ if (fh < 0) return -2;
74
+
75
+ len = lseek(fh, 0, SEEK_END);
76
+ if (len < 0) return -3;
77
+ lseek(fh, 0, SEEK_SET);
78
+
79
+ script = malloc(len+1);
80
+ read(fh, script, len);
81
+
82
+ close(fh);
83
+ script[len] = 0;
84
+
85
+ jsval rval;
86
+ JSString *str;
87
+ JSBool ok;
88
+
89
+ ok = JS_DefineFunction(cx, global, "println", println, 1, 0);
90
+
91
+ ok = JS_EvaluateScript(cx, global, script, len,
92
+ filename, 0, &rval);
93
+ }
@@ -0,0 +1,15 @@
1
+ #!/bin/sh
2
+ base=`pwd`/`dirname $0`/../..
3
+ file=`mktemp /tmp/jsXXXX`
4
+ cat > "$file"
5
+ if [ -x "$base/utils/jsc/RunScript" ]; then
6
+ else
7
+ p=`pwd`
8
+ cd "$base/utils/jsc"
9
+ make 1>/dev/null 2>/dev/null
10
+ cd $p
11
+ fi
12
+
13
+ $base/utils/jsc/RunScript "$file"
14
+
15
+ rm -f "$file"
@@ -0,0 +1 @@
1
+ URL: http://www.julienlecomte.net/yuicompressor/
metadata ADDED
@@ -0,0 +1,157 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: superchris-rubyjs
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.2
5
+ platform: ruby
6
+ authors:
7
+ - Chris Nelson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-07-08 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ParseTree
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.1.1
23
+ version:
24
+ description:
25
+ email: me@christophernelsonconsulting.com
26
+ executables:
27
+ - rubyjs
28
+ extensions: []
29
+
30
+ extra_rdoc_files: []
31
+
32
+ files:
33
+ - README
34
+ - Rakefile
35
+ - bin
36
+ - bin/rubyjs
37
+ - rubyjs.gemspec
38
+ - src
39
+ - src/rubyjs.rb
40
+ - src/rubyjs
41
+ - src/rubyjs/code_generator.rb
42
+ - src/rubyjs/compiler.rb
43
+ - src/rubyjs/debug_name_generator.rb
44
+ - src/rubyjs/encoder.rb
45
+ - src/rubyjs/eval_into.rb
46
+ - src/rubyjs/lib
47
+ - src/rubyjs/lib/core.rb
48
+ - src/rubyjs/lib/json.rb
49
+ - src/rubyjs/lib/microunit.rb
50
+ - src/rubyjs/lib/dom_element.rb
51
+ - src/rubyjs/model.rb
52
+ - src/rubyjs/name_generator.rb
53
+ - src/rwt
54
+ - src/rwt/AbsolutePanel.rb
55
+ - src/rwt/DOM.Konqueror.rb
56
+ - src/rwt/DOM.Opera.rb
57
+ - src/rwt/DOM.rb
58
+ - src/rwt/Event.Opera.rb
59
+ - src/rwt/Event.rb
60
+ - src/rwt/HTTPRequest.IE6.rb
61
+ - src/rwt/HTTPRequest.rb
62
+ - src/rwt/Label.rb
63
+ - src/rwt/Panel.rb
64
+ - src/rwt/RootPanel.rb
65
+ - src/rwt/UIObject.rb
66
+ - src/rwt/Widget.rb
67
+ - src/rwt/ported-from
68
+ - src/rwt/ported-from/AbsolutePanel.java
69
+ - src/rwt/ported-from/DOM.java
70
+ - src/rwt/ported-from/DOMImpl.java
71
+ - src/rwt/ported-from/DOMImplOpera.java
72
+ - src/rwt/ported-from/DOMImplStandard.java
73
+ - src/rwt/ported-from/HTTPRequest.java
74
+ - src/rwt/ported-from/HTTPRequestImpl.java
75
+ - src/rwt/ported-from/Label.java
76
+ - src/rwt/ported-from/Panel.java
77
+ - src/rwt/ported-from/UIObject.java
78
+ - src/rwt/ported-from/Widget.java
79
+ - test
80
+ - test/benchmark
81
+ - test/benchmark/bm_vm1_block.rb
82
+ - test/benchmark/bm_vm1_const.rb
83
+ - test/benchmark/bm_vm1_ensure.rb
84
+ - test/benchmark/common.rb
85
+ - test/benchmark/params.yaml
86
+ - test/common.Browser.rb
87
+ - test/common.rb
88
+ - test/gen_browser_test_suite.rb
89
+ - test/gen_test_suite.rb
90
+ - test/run_benchs.rb
91
+ - test/run_tests.rb
92
+ - test/test_args.rb
93
+ - test/test_array.rb
94
+ - test/test_case.rb
95
+ - test/test_class.rb
96
+ - test/test_eql.rb
97
+ - test/test_exception.rb
98
+ - test/test_expr.rb
99
+ - test/test_hash.rb
100
+ - test/test_hot_ruby.rb
101
+ - test/test_if.rb
102
+ - test/test_insertion_sort.rb
103
+ - test/test_inspect.rb
104
+ - test/test_lebewesen.rb
105
+ - test/test_massign.rb
106
+ - test/test_new.rb
107
+ - test/test_range.rb
108
+ - test/test_regexp.rb
109
+ - test/test_send.rb
110
+ - test/test_simple_output.rb
111
+ - test/test_splat.rb
112
+ - test/test_string.rb
113
+ - test/test_yield.rb
114
+ - test/test_test.rb
115
+ - utils
116
+ - utils/js
117
+ - utils/js/Makefile
118
+ - utils/js/RunScript.class
119
+ - utils/js/RunScript.java
120
+ - utils/js/js.jar
121
+ - utils/js/run.sh
122
+ - utils/jsc
123
+ - utils/jsc/Makefile
124
+ - utils/jsc/README
125
+ - utils/jsc/RunScript.c
126
+ - utils/jsc/run.sh
127
+ - utils/yuicompressor
128
+ - utils/yuicompressor/README
129
+ - utils/yuicompressor/yuicompressor-2.2.5.jar
130
+ has_rdoc: false
131
+ homepage:
132
+ post_install_message:
133
+ rdoc_options: []
134
+
135
+ require_paths:
136
+ - src
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: 1.8.6
142
+ version:
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: "0"
148
+ version:
149
+ requirements: []
150
+
151
+ rubyforge_project:
152
+ rubygems_version: 1.2.0
153
+ signing_key:
154
+ specification_version: 2
155
+ summary: RubyJS is a Ruby to Javascript Compiler. This is a fork with some added features. Orignally by Michael Neumann
156
+ test_files: []
157
+