opal 1.8.2 → 1.8.3.rc1

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +30 -41
  3. data/.rubocop.yml +3 -1
  4. data/Gemfile +1 -0
  5. data/UNRELEASED.md +13 -3
  6. data/docs/compiled_ruby.md +14 -14
  7. data/docs/releasing.md +4 -2
  8. data/exe/opal-build +1 -1
  9. data/lib/opal/compiler.rb +1 -1
  10. data/lib/opal/nodes/call_special.rb +1 -1
  11. data/lib/opal/nodes/literal.rb +1 -1
  12. data/lib/opal/nodes/rescue.rb +1 -1
  13. data/lib/opal/nodes/scope.rb +1 -1
  14. data/lib/opal/version.rb +1 -1
  15. data/opal/corelib/array.rb +1 -1
  16. data/opal/corelib/basic_object.rb +1 -1
  17. data/opal/corelib/constants.rb +3 -3
  18. data/opal/corelib/error.rb +16 -1
  19. data/opal/corelib/hash.rb +1 -1
  20. data/opal/corelib/io.rb +1 -1
  21. data/opal/corelib/module.rb +1 -1
  22. data/opal/corelib/object_space.rb +1 -1
  23. data/opal/corelib/runtime.js +1 -1
  24. data/opal/corelib/string/encoding.rb +6 -6
  25. data/opal.gemspec +2 -1
  26. data/spec/lib/compiler_spec.rb +16 -6
  27. data/spec/lib/fixtures/build_order/file5.rb.erb +1 -1
  28. data/spec/lib/rewriters/hashes/key_duplicates_rewriter_spec.rb +1 -1
  29. data/spec/lib/spec_helper.rb +11 -0
  30. data/spec/opal/core/array/include_spec.rb +12 -0
  31. data/spec/opal/core/runtime/rescue_spec.rb +5 -5
  32. data/spec/opal/stdlib/opal_raw_spec.rb +74 -0
  33. data/spec/support/source_map_helper.rb +1 -3
  34. data/stdlib/bigdecimal.rb +14 -14
  35. data/stdlib/date/date_time.rb +1 -1
  36. data/stdlib/deno/file.rb +1 -1
  37. data/stdlib/js.rb +7 -66
  38. data/stdlib/nodejs/file.rb +7 -7
  39. data/stdlib/opal/raw.rb +73 -0
  40. data/stdlib/optparse.rb +6 -6
  41. data/stdlib/shellwords.rb +1 -1
  42. data/tasks/testing.rake +13 -2
  43. metadata +27 -10
  44. data/spec/opal/stdlib/js_spec.rb +0 -74
@@ -1,74 +0,0 @@
1
- # backtick_javascript: true
2
-
3
- require 'spec_helper'
4
- require 'js'
5
-
6
- describe 'javascript operations using JS module' do
7
- it 'JS.typeof uses typeof to return underlying javascript type' do
8
- [1, `null`, `undefined`, Object.new, [], ""].each do |v|
9
- JS.typeof(v).should == `typeof #{v}`
10
- end
11
- end
12
-
13
- it 'JS.new uses new to create new instance' do
14
- f = `function(){}`
15
- f.JS[:prototype].JS[:color] = 'black'
16
- JS.new(f).JS[:color].should == 'black'
17
- end
18
-
19
- it 'JS.new handles blocks' do
20
- f = `function(a){this.a = a}`
21
- JS.new(f){1}.JS.a.should == 1
22
- end
23
-
24
- it 'JS.instanceof uses instanceof to check if value is an instance of a function' do
25
- f = `function(){}`
26
- JS.instanceof(JS.new(f), f).should == true
27
- JS.instanceof(JS.new(f), `function(){}`).should == false
28
- end
29
-
30
- it 'JS.delete uses delete to remove properties from objects' do
31
- f = `{a:1}`
32
- f.JS[:a].should == 1
33
- JS.delete(f, :a)
34
- `#{f.JS[:a]} === undefined`.should == true
35
- end
36
-
37
- it 'JS.in uses in to check for properties in objects' do
38
- f = `{a:1}`
39
- JS.in(:a, f).should == true
40
- JS.in(:b, f).should == false
41
- end
42
-
43
- it 'JS.void returns undefined' do
44
- f = 1
45
- `#{JS.void(f += 1)} === undefined`.should == true
46
- f.should == 2
47
- end
48
-
49
- it 'JS.call calls global javascript methods' do
50
- JS.call(:parseFloat, '1.0').should == 1
51
- JS.call(:parseInt, '1').should == 1
52
- JS.call(:eval, "({a:1})").JS[:a].should == 1
53
- end
54
-
55
- it 'JS.method_missing calls global javascript methods' do
56
- JS.parseFloat('1.0').should == 1
57
- JS.parseInt('1').should == 1
58
- end
59
-
60
- it 'JS.call calls global javascript methods with blocks' do
61
- begin
62
- JS.global.JS[:_test_global_function] = lambda{|pr| pr.call + 1}
63
- JS._test_global_function{1}.should == 2
64
- ensure
65
- JS.delete(JS.global, :_test_global_function)
66
- end
67
- end
68
-
69
- it 'JS.<METHOD> supports complex method calls' do
70
- obj = `{ foo: function(){return "foo"} }`
71
- args = [1,2,3]
72
- obj.JS.foo(*args).should == :foo
73
- end
74
- end