webruby 0.2.5 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/webruby.rb +0 -4
- data/lib/webruby/app.rb +4 -0
- data/lib/webruby/rake/files.rake +2 -1
- data/lib/webruby/rake/mruby.rake +1 -1
- data/modules/emscripten/AUTHORS +1 -0
- data/modules/emscripten/ChangeLog +34 -1
- data/modules/emscripten/cmake/Platform/Emscripten.cmake +30 -9
- data/modules/emscripten/emcc +61 -28
- data/modules/emscripten/emrun +15 -11
- data/modules/emscripten/emscripten.py +3 -0
- data/modules/emscripten/src/closure-externs.js +110 -0
- data/modules/emscripten/src/intertyper.js +1 -1
- data/modules/emscripten/src/jsifier.js +7 -21
- data/modules/emscripten/src/library.js +2 -1
- data/modules/emscripten/src/library_browser.js +16 -5
- data/modules/emscripten/src/library_fs.js +3 -1
- data/modules/emscripten/src/library_gl.js +691 -591
- data/modules/emscripten/src/library_glut.js +2 -0
- data/modules/emscripten/src/library_sdl.js +29 -5
- data/modules/emscripten/src/library_uuid.js +140 -0
- data/modules/emscripten/src/modules.js +1 -1
- data/modules/emscripten/src/parseTools.js +29 -19
- data/modules/emscripten/src/postamble.js +3 -4
- data/modules/emscripten/src/preamble.js +17 -1
- data/modules/emscripten/src/relooper/Relooper.cpp +8 -8
- data/modules/emscripten/src/relooper/Relooper.h +5 -5
- data/modules/emscripten/src/relooper/test.txt +2 -2
- data/modules/emscripten/src/runtime.js +1 -1
- data/modules/emscripten/src/settings.js +3 -0
- data/modules/emscripten/src/struct_info.json +12 -0
- data/modules/emscripten/system/include/uuid/uuid.h +35 -0
- data/modules/emscripten/tools/js-optimizer.js +191 -142
- data/modules/emscripten/tools/js_optimizer.py +3 -29
- data/modules/emscripten/tools/shared.py +43 -6
- data/modules/mruby/include/mruby/value.h +3 -2
- data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +5 -9
- data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +3 -5
- data/modules/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +0 -3
- data/modules/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +0 -1
- data/modules/mruby/mrbgems/mruby-random/src/mt19937ar.c +0 -1
- data/modules/mruby/mrbgems/mruby-range-ext/src/range.c +2 -6
- data/modules/mruby/mrbgems/mruby-sprintf/src/sprintf.c +0 -4
- data/modules/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +22 -0
- data/modules/mruby/mrbgems/mruby-string-ext/src/string.c +2 -2
- data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +21 -2
- data/modules/mruby/mrbgems/mruby-string-utf8/mrbgem.rake +4 -0
- data/modules/mruby/mrbgems/mruby-string-utf8/src/string.c +297 -0
- data/modules/mruby/mrbgems/mruby-string-utf8/test/string.rb +27 -0
- data/modules/mruby/mrbgems/mruby-struct/src/struct.c +0 -1
- data/modules/mruby/mrblib/init_mrblib.c +0 -3
- data/modules/mruby/src/array.c +22 -8
- data/modules/mruby/src/backtrace.c +12 -9
- data/modules/mruby/src/class.c +3 -3
- data/modules/mruby/src/codegen.c +17 -5
- data/modules/mruby/src/dump.c +5 -6
- data/modules/mruby/src/error.c +0 -2
- data/modules/mruby/src/etc.c +0 -2
- data/modules/mruby/src/gc.c +4 -8
- data/modules/mruby/src/load.c +1 -6
- data/modules/mruby/src/numeric.c +0 -6
- data/modules/mruby/src/object.c +3 -5
- data/modules/mruby/src/parse.y +37 -38
- data/modules/mruby/src/proc.c +8 -1
- data/modules/mruby/src/range.c +3 -7
- data/modules/mruby/src/state.c +0 -1
- data/modules/mruby/src/string.c +2 -17
- data/modules/mruby/src/symbol.c +0 -1
- data/modules/mruby/src/variable.c +3 -22
- data/modules/mruby/src/vm.c +9 -8
- data/modules/mruby/tasks/mrbgem_spec.rake +13 -5
- data/modules/mruby/tasks/mrbgems_test.rake +3 -3
- data/modules/mruby/tasks/mruby_build_commands.rake +2 -2
- data/modules/mruby/tasks/mruby_build_gem.rake +3 -3
- data/modules/mruby/test/init_mrbtest.c +0 -3
- data/modules/mruby/test/t/array.rb +12 -1
- data/modules/mruby/test/t/class.rb +67 -0
- data/modules/mruby/test/t/exception.rb +12 -0
- data/modules/mruby/test/t/kernel.rb +75 -1
- data/modules/mruby/test/t/syntax.rb +115 -0
- data/scripts/gen_require.rb +12 -1
- metadata +8 -2
@@ -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
|
-
|
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
|
data/scripts/gen_require.rb
CHANGED
@@ -84,7 +84,8 @@ END
|
|
84
84
|
}
|
85
85
|
|
86
86
|
def require(name)
|
87
|
-
|
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.
|
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:
|
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
|