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,28 @@
1
+ class TestIf
2
+ def test
3
+ puts "OK" if true
4
+ puts "NOT OK" if false
5
+ puts "OK" unless false
6
+ puts "NOT OK" unless true
7
+ puts "OK" if true and true and (true or false) and (!false)
8
+
9
+ puts "OK" if 5 < 6 and 6 < 7
10
+
11
+ # test the "||" operator
12
+ p(false || "a") # => "a"
13
+ p(nil || "a") # => "a"
14
+ p(true || "a") # => true
15
+ p("b" || "a") # => "b"
16
+
17
+ # test the "&&" operator
18
+
19
+ p(false && "a") # => false
20
+ p(nil && "a") # => nil
21
+ p(true && "a") # => "a"
22
+ p("b" && "a") # => "a"
23
+ end
24
+
25
+ def self.main
26
+ new.test
27
+ end
28
+ end
@@ -0,0 +1,25 @@
1
+ class TestInsertionSort
2
+ def sort ary
3
+ puts "Before insertion sort:"
4
+ p ary
5
+
6
+ for i in 1..(ary.length-1) do
7
+ n = i
8
+ while n >= 1 && ary[n] < ary[n - 1] do
9
+ if ary[n] < ary[n - 1]
10
+ tmp = ary[n]
11
+ ary[n] = ary[n - 1]
12
+ ary[n - 1] = tmp
13
+ end
14
+ n -= 1
15
+ end
16
+ end
17
+
18
+ puts "After insertion sort:"
19
+ p ary
20
+ end
21
+
22
+ def self.main
23
+ new.sort [3, 6, 2, 5, 3, 7, 1, 8]
24
+ end
25
+ end
@@ -0,0 +1,10 @@
1
+ class TestInspect
2
+ def test
3
+ o = [{"Hello"=>'Rubyconf'}]
4
+ puts o.inspect
5
+ end
6
+
7
+ def self.main
8
+ new.test
9
+ end
10
+ end
@@ -0,0 +1,39 @@
1
+ class TestLebewesen
2
+ def self.main
3
+ leni = Katze.new("AA-BB", "Leni")
4
+ flocki = Katze.new("AC-DC", "Flocki")
5
+ bello = Hund.new("AA-ZZ")
6
+ leni.miau
7
+ bello.wau
8
+ bello.jage(leni)
9
+ end
10
+ end
11
+
12
+ class Lebewesen
13
+ def initialize(dns)
14
+ @dns = dns
15
+ end
16
+ end
17
+
18
+ class Katze < Lebewesen
19
+ attr_reader :name
20
+
21
+ def initialize(dns, name)
22
+ super(dns)
23
+ @name = name
24
+ end
25
+
26
+ def miau
27
+ puts "miau, ich bin " + @name
28
+ end
29
+ end
30
+
31
+ class Hund < Lebewesen
32
+ def wau
33
+ puts "wau wau"
34
+ end
35
+
36
+ def jage(katze)
37
+ puts "ich jage " + katze.name
38
+ end
39
+ end
@@ -0,0 +1,66 @@
1
+ class TestMassign
2
+ def self.main
3
+ a, b = 1, 2
4
+ p a
5
+ p b
6
+ puts "--"
7
+
8
+ a, b = 1, 2, 3
9
+ p a
10
+ p b
11
+ puts "--"
12
+
13
+ c = 5
14
+ a, b, c = 1, 2
15
+ p a
16
+ p b
17
+ p c
18
+ puts "--"
19
+
20
+ @a, b, @c = 1, 2, 3
21
+ p @a
22
+ p b
23
+ p @c
24
+ puts "--"
25
+
26
+ puts "swap"
27
+ # swap
28
+ a, b = 1, 2
29
+ p a
30
+ p b
31
+ a, b = b, a
32
+ p a
33
+ p b
34
+ puts "--"
35
+
36
+ puts "splat1"
37
+ a, b, c, *d = 1, 2
38
+ p a
39
+ p b
40
+ p c
41
+ p d
42
+ puts "--"
43
+
44
+ puts "splat2"
45
+ a, *b = 1, 2
46
+ p a
47
+ p b
48
+ puts "--"
49
+
50
+ puts "splat3"
51
+ a, *b = 1, 2, 3, 4, 5
52
+ p a
53
+ p b
54
+ puts "--"
55
+
56
+ puts "splat with globals"
57
+ p $a
58
+ p $b
59
+ $a, $b = 1, 2
60
+ p $a
61
+ p $b
62
+ puts "--"
63
+
64
+ #TODO: a, b = 1 (to_ary)
65
+ end
66
+ end
@@ -0,0 +1,12 @@
1
+ class TestNew
2
+ def initialize
3
+ end
4
+
5
+ def test
6
+ puts "test"
7
+ end
8
+
9
+ def self.main()
10
+ new().test
11
+ end
12
+ end
@@ -0,0 +1,70 @@
1
+ class TestRange
2
+ def test
3
+ a = Range.new(0,2)
4
+ p a.first
5
+ p a.last
6
+ p a
7
+
8
+ i = 1
9
+ p ((i..i+5).to_s)
10
+ p ((i...i+i).to_s)
11
+
12
+ p ((0..2).to_s)
13
+ p ((0...2).to_s)
14
+
15
+ (0..4).each do |i| p i end
16
+ (0...4).each do |i| p i end
17
+ (-1..-4).each do |i| p i end
18
+
19
+ p ((0..4).include?(4))
20
+ p ((0..4).include?(5))
21
+ p ((0...4).include?(5))
22
+ p ((0...4).include?(4))
23
+ p ((0...4).include?(3))
24
+ p ((0...4).include?(0))
25
+ p ((0...4).include?(-1))
26
+
27
+ p ((-1..-5).to_a)
28
+ p ((-5..-1).to_a)
29
+
30
+ r = Range.new(0, 4)
31
+ p r.first
32
+ p r.begin
33
+ p r.last
34
+ p r.end
35
+ p r.exclude_end?
36
+
37
+ r = 1...5
38
+ p r.first
39
+ p r.begin
40
+ p r.last
41
+ p r.end
42
+ p r.exclude_end?
43
+
44
+ p (false == false)
45
+ p (false == true)
46
+ p (true == false)
47
+ p (true == true)
48
+
49
+ p ((0..2) == (0..2))
50
+ p ((0..2) == Range.new(0,2))
51
+ p ((0..2) == (0...2))
52
+
53
+ j = 55
54
+ p j
55
+ for i in 1..100
56
+ j = i
57
+ end
58
+ p j
59
+
60
+ j = 54
61
+ p j
62
+ for j in 1..100
63
+ end
64
+ p j
65
+ end
66
+
67
+ def self.main
68
+ new.test
69
+ end
70
+ end
@@ -0,0 +1,22 @@
1
+ class TestRegexp
2
+ def test
3
+ p "okay" if "hallo" =~ /ll/
4
+ pos = "hallo" =~ /ll/
5
+ p pos
6
+
7
+ "hallo" =~ /(ll)/
8
+ p $1
9
+ p $2
10
+ p $3
11
+
12
+ "hallo" =~ /a(ll)(o)/
13
+ p $1
14
+ p $2
15
+ p $3
16
+ p $4
17
+ end
18
+
19
+ def self.main
20
+ new.test
21
+ end
22
+ end
@@ -0,0 +1,65 @@
1
+ class A
2
+ def a_method(a,b)
3
+ p a, b
4
+ end
5
+ end
6
+
7
+ class B < A
8
+ def a_method(b, a)
9
+ p "in B"
10
+ super
11
+ end
12
+
13
+ def c_method(b)
14
+ end
15
+ end
16
+
17
+ class C
18
+ def method_missing(id, *args, &block)
19
+ p "mm: #{id}, #{args}"
20
+ end
21
+ end
22
+
23
+ class TestSend
24
+ def self.main
25
+ puts "send"
26
+ p A.new.send("a_method", 1, 2)
27
+ p B.new.send("a_method", 1, 2)
28
+
29
+ puts "respond_to?"
30
+ p A.new.respond_to?(:a_method)
31
+ p A.new.respond_to?(:to_s)
32
+ p A.new.respond_to?(:inspect)
33
+ p A.new.respond_to?(:b_method)
34
+ p A.new.respond_to?(:c_method)
35
+
36
+ puts "method_missing"
37
+ p C.new.respond_to?(:blah_blah)
38
+ C.new.blah_blah(1,2,3)
39
+
40
+ begin
41
+ A.new.blah_blah
42
+ puts "FAILURE?"
43
+ rescue NoMethodError
44
+ puts "catched!!!"
45
+ end
46
+
47
+ begin
48
+ A.not_a_method
49
+ rescue NoMethodError
50
+ p "goood"
51
+ end
52
+
53
+ puts "class Method"
54
+ m = "hallo".method(:to_s)
55
+ p m
56
+ p m.call
57
+
58
+ a = [1,2,3]
59
+ m = a.method(:+)
60
+ p m
61
+ p m.call([2,3])
62
+ p m
63
+ p a
64
+ end
65
+ end
@@ -0,0 +1,5 @@
1
+ class TestSimpleOutput
2
+ def self.main()
3
+ puts "Hello World from RubyJS"
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ class TestSplat
2
+ def m(*args)
3
+ p args
4
+ end
5
+
6
+ def self.main
7
+ obj = new()
8
+
9
+ obj.m
10
+ obj.m(*[])
11
+
12
+ obj.m(1)
13
+ obj.m(*[1])
14
+ obj.m(1,*[])
15
+
16
+ obj.m(1,2)
17
+ obj.m(*[1,2])
18
+ obj.m(1,*[2])
19
+ obj.m(1,*[1,2])
20
+ end
21
+ end
@@ -0,0 +1,51 @@
1
+ class TestString
2
+ def test
3
+ # inspect
4
+ p "hello"
5
+ p "hallo\b\t\n"
6
+ p "hallo\\leute"
7
+ p '"super"'
8
+
9
+ # index
10
+ p "hello".index('e')
11
+ p "hello".index('lo')
12
+ p "hello".index('a')
13
+ p "hello hello".index('ll')
14
+ p "hello hello".index('ll', 3)
15
+
16
+ # []
17
+ p "hallo"[0,1]
18
+ p "hallo"[0,2]
19
+ p "hallo"[0,5]
20
+
21
+ p ("10".rjust(10, "0"))
22
+ p ("10".rjust(1, "blah"))
23
+ p ("x".rjust(4, "()"))
24
+
25
+ p ("10".ljust(10, "0"))
26
+ p ("10".ljust(1, "blah"))
27
+ p ("x".ljust(4, "()"))
28
+
29
+
30
+ # string interpolation
31
+ p "abc #{ 1 + 2 } def"
32
+ @a = "hallo".inspect
33
+ @b = 4.5
34
+ p "#{@a},#{@b}"
35
+
36
+ # gsub
37
+ s = "hallo".gsub("l", "r")
38
+ p s
39
+ s = "hallo".gsub(/ll/, "rr")
40
+ p s
41
+ s = "hallo".gsub(/l/) { "r" }
42
+ p s
43
+ s = "hallo".gsub(/ll/) { "blah blah" }
44
+ p s
45
+ "hallllllo".gsub(/(l)l/) {|i| p i }
46
+ end
47
+
48
+ def self.main
49
+ new.test
50
+ end
51
+ end
@@ -0,0 +1,17 @@
1
+ require 'microunit'
2
+
3
+ class TestTest < TestCase
4
+
5
+ def test_good
6
+ assert true
7
+ end
8
+
9
+ def test_four
10
+ assert(2+2==4, "2 + 2 is four")
11
+ end
12
+
13
+ def test_assert_equal
14
+ assert_equal 1 + 1, 2, "1 + 1 == 2"
15
+ end
16
+
17
+ end