webruby 0.2.5 → 0.2.7

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