superchris-rubyjs 0.8.2

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.
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
+