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,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