webruby 0.2.5 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webruby.rb +0 -4
  3. data/lib/webruby/app.rb +4 -0
  4. data/lib/webruby/rake/files.rake +2 -1
  5. data/lib/webruby/rake/mruby.rake +1 -1
  6. data/modules/emscripten/AUTHORS +1 -0
  7. data/modules/emscripten/ChangeLog +34 -1
  8. data/modules/emscripten/cmake/Platform/Emscripten.cmake +30 -9
  9. data/modules/emscripten/emcc +61 -28
  10. data/modules/emscripten/emrun +15 -11
  11. data/modules/emscripten/emscripten.py +3 -0
  12. data/modules/emscripten/src/closure-externs.js +110 -0
  13. data/modules/emscripten/src/intertyper.js +1 -1
  14. data/modules/emscripten/src/jsifier.js +7 -21
  15. data/modules/emscripten/src/library.js +2 -1
  16. data/modules/emscripten/src/library_browser.js +16 -5
  17. data/modules/emscripten/src/library_fs.js +3 -1
  18. data/modules/emscripten/src/library_gl.js +691 -591
  19. data/modules/emscripten/src/library_glut.js +2 -0
  20. data/modules/emscripten/src/library_sdl.js +29 -5
  21. data/modules/emscripten/src/library_uuid.js +140 -0
  22. data/modules/emscripten/src/modules.js +1 -1
  23. data/modules/emscripten/src/parseTools.js +29 -19
  24. data/modules/emscripten/src/postamble.js +3 -4
  25. data/modules/emscripten/src/preamble.js +17 -1
  26. data/modules/emscripten/src/relooper/Relooper.cpp +8 -8
  27. data/modules/emscripten/src/relooper/Relooper.h +5 -5
  28. data/modules/emscripten/src/relooper/test.txt +2 -2
  29. data/modules/emscripten/src/runtime.js +1 -1
  30. data/modules/emscripten/src/settings.js +3 -0
  31. data/modules/emscripten/src/struct_info.json +12 -0
  32. data/modules/emscripten/system/include/uuid/uuid.h +35 -0
  33. data/modules/emscripten/tools/js-optimizer.js +191 -142
  34. data/modules/emscripten/tools/js_optimizer.py +3 -29
  35. data/modules/emscripten/tools/shared.py +43 -6
  36. data/modules/mruby/include/mruby/value.h +3 -2
  37. data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +5 -9
  38. data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +3 -5
  39. data/modules/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +0 -3
  40. data/modules/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +0 -1
  41. data/modules/mruby/mrbgems/mruby-random/src/mt19937ar.c +0 -1
  42. data/modules/mruby/mrbgems/mruby-range-ext/src/range.c +2 -6
  43. data/modules/mruby/mrbgems/mruby-sprintf/src/sprintf.c +0 -4
  44. data/modules/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +22 -0
  45. data/modules/mruby/mrbgems/mruby-string-ext/src/string.c +2 -2
  46. data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +21 -2
  47. data/modules/mruby/mrbgems/mruby-string-utf8/mrbgem.rake +4 -0
  48. data/modules/mruby/mrbgems/mruby-string-utf8/src/string.c +297 -0
  49. data/modules/mruby/mrbgems/mruby-string-utf8/test/string.rb +27 -0
  50. data/modules/mruby/mrbgems/mruby-struct/src/struct.c +0 -1
  51. data/modules/mruby/mrblib/init_mrblib.c +0 -3
  52. data/modules/mruby/src/array.c +22 -8
  53. data/modules/mruby/src/backtrace.c +12 -9
  54. data/modules/mruby/src/class.c +3 -3
  55. data/modules/mruby/src/codegen.c +17 -5
  56. data/modules/mruby/src/dump.c +5 -6
  57. data/modules/mruby/src/error.c +0 -2
  58. data/modules/mruby/src/etc.c +0 -2
  59. data/modules/mruby/src/gc.c +4 -8
  60. data/modules/mruby/src/load.c +1 -6
  61. data/modules/mruby/src/numeric.c +0 -6
  62. data/modules/mruby/src/object.c +3 -5
  63. data/modules/mruby/src/parse.y +37 -38
  64. data/modules/mruby/src/proc.c +8 -1
  65. data/modules/mruby/src/range.c +3 -7
  66. data/modules/mruby/src/state.c +0 -1
  67. data/modules/mruby/src/string.c +2 -17
  68. data/modules/mruby/src/symbol.c +0 -1
  69. data/modules/mruby/src/variable.c +3 -22
  70. data/modules/mruby/src/vm.c +9 -8
  71. data/modules/mruby/tasks/mrbgem_spec.rake +13 -5
  72. data/modules/mruby/tasks/mrbgems_test.rake +3 -3
  73. data/modules/mruby/tasks/mruby_build_commands.rake +2 -2
  74. data/modules/mruby/tasks/mruby_build_gem.rake +3 -3
  75. data/modules/mruby/test/init_mrbtest.c +0 -3
  76. data/modules/mruby/test/t/array.rb +12 -1
  77. data/modules/mruby/test/t/class.rb +67 -0
  78. data/modules/mruby/test/t/exception.rb +12 -0
  79. data/modules/mruby/test/t/kernel.rb +75 -1
  80. data/modules/mruby/test/t/syntax.rb +115 -0
  81. data/scripts/gen_require.rb +12 -1
  82. metadata +8 -2
@@ -345,3 +345,15 @@ assert('Exception#backtrace') do
345
345
 
346
346
  true
347
347
  end
348
+
349
+ assert('Raise in ensure') do
350
+
351
+ assert_raise(RuntimeError) do
352
+ begin
353
+ raise ""
354
+ ensure
355
+ raise ""
356
+ end
357
+ end
358
+
359
+ end
@@ -325,6 +325,57 @@ assert('Kernel#loop', '15.3.1.3.29') do
325
325
  assert_equal i, 100
326
326
  end
327
327
 
328
+ assert('Kernel#method_missing', '15.3.1.3.30') do
329
+ class MMTestClass
330
+ def method_missing(sym)
331
+ "A call to #{sym}"
332
+ end
333
+ end
334
+ mm_test = MMTestClass.new
335
+ assert_equal 'A call to no_method_named_this', mm_test.no_method_named_this
336
+
337
+ a = String.new
338
+ begin
339
+ a.no_method_named_this
340
+ rescue NoMethodError => e
341
+ assert_equal "undefined method 'no_method_named_this' for \"\"", e.message
342
+ end
343
+
344
+ class ShortInspectClass
345
+ def inspect
346
+ 'An inspect string'
347
+ end
348
+ end
349
+ b = ShortInspectClass.new
350
+ begin
351
+ b.no_method_named_this
352
+ rescue NoMethodError => e
353
+ assert_equal "undefined method 'no_method_named_this' for An inspect string", e.message
354
+ end
355
+
356
+ class LongInspectClass
357
+ def inspect
358
+ "A" * 70
359
+ end
360
+ end
361
+ c = LongInspectClass.new
362
+ begin
363
+ c.no_method_named_this
364
+ rescue NoMethodError => e
365
+ assert_equal "undefined method 'no_method_named_this' for #{c.to_s}", e.message
366
+ end
367
+
368
+ class NoInspectClass
369
+ undef inspect
370
+ end
371
+ d = NoInspectClass.new
372
+ begin
373
+ d.no_method_named_this
374
+ rescue NoMethodError => e
375
+ assert_equal "undefined method 'no_method_named_this' for #{d.to_s}", e.message
376
+ end
377
+ end
378
+
328
379
  assert('Kernel#methods', '15.3.1.3.31') do
329
380
  assert_equal Array, methods.class
330
381
  end
@@ -334,7 +385,18 @@ assert('Kernel#nil?', '15.3.1.3.32') do
334
385
  end
335
386
 
336
387
  assert('Kernel#object_id', '15.3.1.3.33') do
337
- assert_equal Fixnum, object_id.class
388
+ a = ""
389
+ b = ""
390
+ assert_not_equal a.object_id, b.object_id
391
+
392
+ assert_kind_of Numeric, object_id
393
+ assert_kind_of Numeric, "".object_id
394
+ assert_kind_of Numeric, true.object_id
395
+ assert_kind_of Numeric, false.object_id
396
+ assert_kind_of Numeric, nil.object_id
397
+ assert_kind_of Numeric, :no.object_id
398
+ assert_kind_of Numeric, 1.object_id
399
+ assert_kind_of Numeric, 1.0.object_id
338
400
  end
339
401
 
340
402
  # Kernel#p is defined in mruby-print mrbgem. '15.3.1.3.34'
@@ -427,3 +489,15 @@ assert('Kernel#respond_to_missing?') do
427
489
  assert_true Test4RespondToMissing.new.respond_to?(:a_method)
428
490
  assert_false Test4RespondToMissing.new.respond_to?(:no_method)
429
491
  end
492
+
493
+ assert('stack extend') do
494
+ def recurse(count, stop)
495
+ return count if count > stop
496
+ recurse(count+1, stop)
497
+ end
498
+
499
+ assert_equal 6, recurse(0, 5)
500
+ assert_raise RuntimeError do
501
+ recurse(0, 100000)
502
+ end
503
+ end
@@ -42,6 +42,98 @@ assert('Abbreviated variable assignment', '11.4.2.3.2') do
42
42
  assert_equal 3, c
43
43
  end
44
44
 
45
+ assert('case expression', '11.5.2.2.4') do
46
+ # case-expression-with-expression, one when-clause
47
+ x = 0
48
+ case "a"
49
+ when "a"
50
+ x = 1
51
+ end
52
+ assert_equal 1, x
53
+
54
+ # case-expression-with-expression, multiple when-clauses
55
+ x = 0
56
+ case "b"
57
+ when "a"
58
+ x = 1
59
+ when "b"
60
+ x = 2
61
+ end
62
+ assert_equal 2, x
63
+
64
+ # no matching when-clause
65
+ x = 0
66
+ case "c"
67
+ when "a"
68
+ x = 1
69
+ when "b"
70
+ x = 2
71
+ end
72
+ assert_equal 0, x
73
+
74
+ # case-expression-with-expression, one when-clause and one else-clause
75
+ a = 0
76
+ case "c"
77
+ when "a"
78
+ x = 1
79
+ else
80
+ x = 3
81
+ end
82
+ assert_equal 3, x
83
+
84
+ # case-expression-without-expression, one when-clause
85
+ x = 0
86
+ case
87
+ when true
88
+ x = 1
89
+ end
90
+ assert_equal 1, x
91
+
92
+ # case-expression-without-expression, multiple when-clauses
93
+ x = 0
94
+ case
95
+ when 0 == 1
96
+ x = 1
97
+ when 1 == 1
98
+ x = 2
99
+ end
100
+ assert_equal 2, x
101
+
102
+ # case-expression-without-expression, one when-clause and one else-clause
103
+ x = 0
104
+ case
105
+ when 0 == 1
106
+ x = 1
107
+ else
108
+ x = 3
109
+ end
110
+ assert_equal 3, x
111
+
112
+ # multiple when-arguments
113
+ x = 0
114
+ case 4
115
+ when 1, 3, 5
116
+ x = 1
117
+ when 2, 4, 6
118
+ x = 2
119
+ end
120
+ assert_equal 2, x
121
+
122
+ # when-argument with splatting argument
123
+ x = :integer
124
+ odds = [ 1, 3, 5, 7, 9 ]
125
+ evens = [ 2, 4, 6, 8 ]
126
+ case 5
127
+ when *odds
128
+ x = :odd
129
+ when *evens
130
+ x = :even
131
+ end
132
+ assert_equal :odd, x
133
+
134
+ true
135
+ end
136
+
45
137
  assert('Nested const reference') do
46
138
  module Syntax4Const
47
139
  CONST1 = "hello world"
@@ -102,3 +194,26 @@ assert('Return values of case statements') do
102
194
  assert_equal [nil], b
103
195
  assert_equal 1, fb.call
104
196
  end
197
+
198
+ assert('splat in case statement') do
199
+ values = [3,5,1,7,8]
200
+ testa = [1,2,7]
201
+ testb = [5,6]
202
+ resulta = []
203
+ resultb = []
204
+ resultc = []
205
+ values.each do |value|
206
+ case value
207
+ when *testa
208
+ resulta << value
209
+ when *testb
210
+ resultb << value
211
+ else
212
+ resultc << value
213
+ end
214
+ end
215
+
216
+ assert_equal [1,7], resulta
217
+ assert_equal [5], resultb
218
+ assert_equal [3,8], resultc
219
+ end
@@ -84,7 +84,8 @@ END
84
84
  }
85
85
 
86
86
  def require(name)
87
- return false unless @@REQUIRED_MODULES.include?(name)
87
+ name = lookup_module(name)
88
+ return false unless name
88
89
  @@REQUIRED_PATH = name[0, name.rindex('/') || 0]
89
90
  require_internal(@@REQUIRED_MODULES[name])
90
91
  @@REQUIRED_MODULES.delete(name)
@@ -106,6 +107,16 @@ END
106
107
  end
107
108
  require(current_path)
108
109
  end
110
+
111
+ private
112
+ def lookup_module(name)
113
+ return name if @@REQUIRED_MODULES.include?(name)
114
+ if name.end_with?('.rb')
115
+ stripped_name = name[0..-4]
116
+ return stripped_name if @@REQUIRED_MODULES.include?(stripped_name)
117
+ end
118
+ return nil
119
+ end
109
120
  end
110
121
  END
111
122
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xuejie Xiao
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-29 00:00:00.000000000 Z
11
+ date: 2014-01-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: compile your favourite Ruby source code for the browser!
14
14
  email: xxuejie@gmail.com
@@ -66,6 +66,7 @@ files:
66
66
  - modules/emscripten/scons-tools/emscripten.py
67
67
  - modules/emscripten/scons-tools/llvm.py
68
68
  - modules/emscripten/src/analyzer.js
69
+ - modules/emscripten/src/closure-externs.js
69
70
  - modules/emscripten/src/compiler.html
70
71
  - modules/emscripten/src/compiler.js
71
72
  - modules/emscripten/src/compiler_phase.html
@@ -112,6 +113,7 @@ files:
112
113
  - modules/emscripten/src/library_sockfs.js
113
114
  - modules/emscripten/src/library_strtok_r.c
114
115
  - modules/emscripten/src/library_tty.js
116
+ - modules/emscripten/src/library_uuid.js
115
117
  - modules/emscripten/src/library_xlib.js
116
118
  - modules/emscripten/src/long.js
117
119
  - modules/emscripten/src/modules.js
@@ -598,6 +600,7 @@ files:
598
600
  - modules/emscripten/system/include/SDL/SDL_version.h
599
601
  - modules/emscripten/system/include/SDL/SDL_video.h
600
602
  - modules/emscripten/system/include/unwind.h
603
+ - modules/emscripten/system/include/uuid/uuid.h
601
604
  - modules/emscripten/system/include/X11/keysym.h
602
605
  - modules/emscripten/system/include/X11/keysymdef.h
603
606
  - modules/emscripten/system/include/X11/X.h
@@ -1403,6 +1406,9 @@ files:
1403
1406
  - modules/mruby/mrbgems/mruby-string-ext/mrblib/string.rb
1404
1407
  - modules/mruby/mrbgems/mruby-string-ext/src/string.c
1405
1408
  - modules/mruby/mrbgems/mruby-string-ext/test/string.rb
1409
+ - modules/mruby/mrbgems/mruby-string-utf8/mrbgem.rake
1410
+ - modules/mruby/mrbgems/mruby-string-utf8/src/string.c
1411
+ - modules/mruby/mrbgems/mruby-string-utf8/test/string.rb
1406
1412
  - modules/mruby/mrbgems/mruby-struct/mrbgem.rake
1407
1413
  - modules/mruby/mrbgems/mruby-struct/mrblib/struct.rb
1408
1414
  - modules/mruby/mrbgems/mruby-struct/src/struct.c