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