opal 0.11.0.rc1 → 0.11.0
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/.jshintrc +1 -1
- data/.travis.yml +14 -2
- data/CHANGELOG.md +30 -5
- data/HACKING.md +2 -2
- data/README.md +4 -5
- data/appveyor.yml +3 -4
- data/bin +1 -0
- data/docs/headless_chrome.md +105 -0
- data/docs/rspec.md +2 -19
- data/{bin → exe}/opal +0 -0
- data/{bin → exe}/opal-build +0 -0
- data/{bin → exe}/opal-mspec +0 -0
- data/{bin → exe}/opal-repl +0 -0
- data/lib/opal.rb +1 -0
- data/lib/opal/ast/builder.rb +0 -4
- data/lib/opal/builder.rb +69 -15
- data/lib/opal/builder_processors.rb +8 -7
- data/lib/opal/cli.rb +1 -1
- data/lib/opal/cli_options.rb +1 -1
- data/lib/opal/cli_runners.rb +1 -1
- data/lib/opal/cli_runners/applescript.rb +0 -1
- data/lib/opal/cli_runners/chrome.js +135 -0
- data/lib/opal/cli_runners/chrome.rb +100 -0
- data/lib/opal/cli_runners/nashorn.rb +0 -1
- data/lib/opal/cli_runners/node_modules/.bin/chrome-remote-interface +1 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/LICENSE +18 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/README.md +843 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/bin/client.js +326 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/chrome-remote-interface.js +11 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/index.js +39 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/api.js +84 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/chrome.js +289 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/defaults.js +4 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/devtools.js +245 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/external-request.js +23 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/protocol.json +13303 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/websocket-wrapper.js +32 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/package.json +128 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/webpack.config.js +55 -0
- data/lib/opal/cli_runners/node_modules/commander/Readme.md +195 -0
- data/lib/opal/cli_runners/node_modules/commander/index.js +851 -0
- data/lib/opal/cli_runners/node_modules/commander/package.json +92 -0
- data/lib/opal/cli_runners/node_modules/ultron/LICENSE +22 -0
- data/lib/opal/cli_runners/node_modules/ultron/index.js +138 -0
- data/lib/opal/cli_runners/node_modules/ultron/package.json +112 -0
- data/lib/opal/cli_runners/node_modules/ws/LICENSE +21 -0
- data/lib/opal/cli_runners/node_modules/ws/README.md +259 -0
- data/lib/opal/cli_runners/node_modules/ws/SECURITY.md +33 -0
- data/lib/opal/cli_runners/node_modules/ws/index.js +15 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.fallback.js +56 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.js +15 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/ErrorCodes.js +28 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/EventTarget.js +158 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/Extensions.js +69 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/PerMessageDeflate.js +339 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/Receiver.js +520 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/Sender.js +438 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/Validation.fallback.js +9 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/Validation.js +17 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/WebSocket.js +705 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/WebSocketServer.js +336 -0
- data/lib/opal/cli_runners/node_modules/ws/package.json +122 -0
- data/lib/opal/cli_runners/nodejs.rb +0 -1
- data/lib/opal/cli_runners/package.json +5 -0
- data/lib/opal/cli_runners/server.rb +0 -1
- data/lib/opal/compiler.rb +8 -18
- data/lib/opal/deprecations.rb +1 -1
- data/lib/opal/eof_content.rb +36 -0
- data/lib/opal/nodes.rb +0 -1
- data/lib/opal/nodes/args/kwarg.rb +8 -6
- data/lib/opal/nodes/args/kwoptarg.rb +12 -6
- data/lib/opal/nodes/call.rb +3 -2
- data/lib/opal/nodes/call_special.rb +10 -1
- data/lib/opal/nodes/definitions.rb +5 -3
- data/lib/opal/nodes/helpers.rb +4 -8
- data/lib/opal/nodes/literal.rb +13 -1
- data/lib/opal/nodes/logic.rb +19 -32
- data/lib/opal/nodes/node_with_args.rb +1 -1
- data/lib/opal/nodes/scope.rb +1 -0
- data/lib/opal/nodes/super.rb +0 -4
- data/lib/opal/nodes/variables.rb +11 -0
- data/lib/opal/parser.rb +24 -19
- data/lib/opal/path_reader.rb +17 -4
- data/lib/opal/rewriter.rb +5 -1
- data/lib/opal/rewriters/base.rb +37 -34
- data/lib/opal/rewriters/binary_operator_assignment.rb +0 -3
- data/lib/opal/rewriters/for_rewriter.rb +93 -0
- data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +58 -0
- data/lib/opal/rewriters/js_reserved_words.rb +5 -8
- data/lib/opal/rewriters/logical_operator_assignment.rb +0 -1
- data/lib/opal/simple_server.rb +1 -0
- data/lib/opal/util.rb +1 -1
- data/lib/opal/version.rb +1 -1
- data/opal.gemspec +32 -30
- data/opal/corelib/array.rb +53 -30
- data/opal/corelib/boolean.rb +11 -3
- data/opal/corelib/comparable.rb +16 -0
- data/opal/corelib/constants.rb +3 -3
- data/opal/corelib/enumerable.rb +48 -1
- data/opal/corelib/file.rb +54 -11
- data/opal/corelib/hash.rb +98 -0
- data/opal/corelib/io.rb +2 -2
- data/opal/corelib/kernel.rb +28 -11
- data/opal/corelib/marshal/read_buffer.rb +288 -150
- data/opal/corelib/marshal/write_buffer.rb +27 -2
- data/opal/corelib/nil.rb +11 -3
- data/opal/corelib/number.rb +90 -20
- data/opal/corelib/numeric.rb +3 -3
- data/opal/corelib/random.rb +1 -1
- data/opal/corelib/range.rb +22 -22
- data/opal/corelib/regexp.rb +45 -4
- data/opal/corelib/runtime.js +25 -9
- data/opal/corelib/string.rb +1 -1
- data/opal/corelib/string/encoding.rb +21 -29
- data/opal/corelib/string/inheritance.rb +1 -1
- data/opal/corelib/struct.rb +0 -5
- data/opal/corelib/time.rb +1 -1
- data/stdlib/buffer/array.rb +4 -2
- data/stdlib/date.rb +46 -12
- data/stdlib/headless_chrome.rb +11 -0
- data/stdlib/nodejs/file.rb +36 -11
- data/stdlib/nodejs/io.rb +8 -0
- data/stdlib/nodejs/stacktrace.rb +116 -100
- data/stdlib/opal-builder.rb +1 -0
- data/stdlib/opal-platform.rb +6 -6
- data/stdlib/opal/platform.rb +2 -2
- data/stdlib/rbconfig.rb +1 -1
- data/stdlib/securerandom.rb +1 -1
- data/tasks/testing.rake +58 -26
- data/tasks/testing/opal_rspec_smoketest.Gemfile +5 -12
- metadata +64 -733
- data/lib/opal/cli_runners/phantom.js +0 -69
- data/lib/opal/cli_runners/phantomjs.rb +0 -29
- data/lib/opal/hike_path_finder.rb +0 -19
- data/lib/opal/nodes/for.rb +0 -75
- data/spec/README.md +0 -10
- data/spec/filters/bugs/array.rb +0 -16
- data/spec/filters/bugs/basicobject.rb +0 -13
- data/spec/filters/bugs/bigdecimal.rb +0 -146
- data/spec/filters/bugs/class.rb +0 -11
- data/spec/filters/bugs/comparable.rb +0 -5
- data/spec/filters/bugs/complex.rb +0 -3
- data/spec/filters/bugs/date.rb +0 -94
- data/spec/filters/bugs/enumerable.rb +0 -43
- data/spec/filters/bugs/enumerator.rb +0 -40
- data/spec/filters/bugs/exception.rb +0 -72
- data/spec/filters/bugs/file.rb +0 -8
- data/spec/filters/bugs/float.rb +0 -39
- data/spec/filters/bugs/hash.rb +0 -15
- data/spec/filters/bugs/inheritance.rb +0 -5
- data/spec/filters/bugs/integer.rb +0 -30
- data/spec/filters/bugs/io.rb +0 -8
- data/spec/filters/bugs/kernel.rb +0 -168
- data/spec/filters/bugs/language.rb +0 -190
- data/spec/filters/bugs/marshal.rb +0 -41
- data/spec/filters/bugs/method.rb +0 -60
- data/spec/filters/bugs/module.rb +0 -158
- data/spec/filters/bugs/numeric.rb +0 -8
- data/spec/filters/bugs/pathname.rb +0 -7
- data/spec/filters/bugs/proc.rb +0 -37
- data/spec/filters/bugs/random.rb +0 -7
- data/spec/filters/bugs/range.rb +0 -36
- data/spec/filters/bugs/rational.rb +0 -4
- data/spec/filters/bugs/regexp.rb +0 -158
- data/spec/filters/bugs/set.rb +0 -41
- data/spec/filters/bugs/singleton.rb +0 -6
- data/spec/filters/bugs/string.rb +0 -98
- data/spec/filters/bugs/stringscanner.rb +0 -71
- data/spec/filters/bugs/struct.rb +0 -4
- data/spec/filters/bugs/time.rb +0 -35
- data/spec/filters/bugs/unboundmethod.rb +0 -17
- data/spec/filters/unsupported/array.rb +0 -167
- data/spec/filters/unsupported/basicobject.rb +0 -14
- data/spec/filters/unsupported/bignum.rb +0 -55
- data/spec/filters/unsupported/class.rb +0 -4
- data/spec/filters/unsupported/delegator.rb +0 -5
- data/spec/filters/unsupported/enumerable.rb +0 -11
- data/spec/filters/unsupported/enumerator.rb +0 -13
- data/spec/filters/unsupported/file.rb +0 -4
- data/spec/filters/unsupported/fixnum.rb +0 -14
- data/spec/filters/unsupported/float.rb +0 -46
- data/spec/filters/unsupported/freeze.rb +0 -75
- data/spec/filters/unsupported/hash.rb +0 -43
- data/spec/filters/unsupported/integer.rb +0 -3
- data/spec/filters/unsupported/kernel.rb +0 -32
- data/spec/filters/unsupported/language.rb +0 -22
- data/spec/filters/unsupported/marshal.rb +0 -46
- data/spec/filters/unsupported/matchdata.rb +0 -33
- data/spec/filters/unsupported/math.rb +0 -3
- data/spec/filters/unsupported/pathname.rb +0 -3
- data/spec/filters/unsupported/privacy.rb +0 -279
- data/spec/filters/unsupported/proc.rb +0 -3
- data/spec/filters/unsupported/random.rb +0 -4
- data/spec/filters/unsupported/range.rb +0 -7
- data/spec/filters/unsupported/regexp.rb +0 -69
- data/spec/filters/unsupported/set.rb +0 -4
- data/spec/filters/unsupported/singleton.rb +0 -6
- data/spec/filters/unsupported/string.rb +0 -546
- data/spec/filters/unsupported/struct.rb +0 -6
- data/spec/filters/unsupported/symbol.rb +0 -20
- data/spec/filters/unsupported/taint.rb +0 -30
- data/spec/filters/unsupported/thread.rb +0 -7
- data/spec/filters/unsupported/time.rb +0 -202
- data/spec/lib/builder_processors_spec.rb +0 -27
- data/spec/lib/builder_spec.rb +0 -89
- data/spec/lib/cli_runners/phantomjs_spec.rb +0 -39
- data/spec/lib/cli_spec.rb +0 -240
- data/spec/lib/compiler/call_spec.rb +0 -732
- data/spec/lib/compiler_spec.rb +0 -294
- data/spec/lib/config_spec.rb +0 -110
- data/spec/lib/dependency_resolver_spec.rb +0 -40
- data/spec/lib/deprecations_spec.rb +0 -16
- data/spec/lib/fixtures/complex_sprockets.js.rb.erb +0 -4
- data/spec/lib/fixtures/file_with_directives.js +0 -2
- data/spec/lib/fixtures/jst_file.js.jst +0 -1
- data/spec/lib/fixtures/no_requires.rb +0 -1
- data/spec/lib/fixtures/opal_file.rb +0 -2
- data/spec/lib/fixtures/require_tree_test.rb +0 -3
- data/spec/lib/fixtures/required_file.js +0 -1
- data/spec/lib/fixtures/required_tree_test/required_file1.rb +0 -1
- data/spec/lib/fixtures/required_tree_test/required_file2.rb +0 -1
- data/spec/lib/fixtures/requires.rb +0 -7
- data/spec/lib/fixtures/source_location_test.rb +0 -7
- data/spec/lib/fixtures/source_map.rb +0 -1
- data/spec/lib/fixtures/source_map/subfolder/other_file.rb +0 -1
- data/spec/lib/fixtures/sprockets_file.js.rb +0 -3
- data/spec/lib/fixtures/sprockets_require_tree_test.rb +0 -3
- data/spec/lib/hike_path_finder_spec.rb +0 -23
- data/spec/lib/path_reader_spec.rb +0 -36
- data/spec/lib/paths_spec.rb +0 -18
- data/spec/lib/rewriters/binary_operator_assignment_spec.rb +0 -151
- data/spec/lib/rewriters/block_to_iter_spec.rb +0 -28
- data/spec/lib/rewriters/dot_js_syntax_spec.rb +0 -108
- data/spec/lib/rewriters/explicit_writer_return_spec.rb +0 -186
- data/spec/lib/rewriters/js_reserved_words_spec.rb +0 -116
- data/spec/lib/rewriters/logical_operator_assignment_spec.rb +0 -202
- data/spec/lib/rewriters/opal_engine_check_spec.rb +0 -82
- data/spec/lib/rewriters/rubyspec/filters_rewriter_spec.rb +0 -53
- data/spec/lib/shared/path_finder_shared.rb +0 -19
- data/spec/lib/shared/path_reader_shared.rb +0 -31
- data/spec/lib/simple_server_spec.rb +0 -54
- data/spec/lib/spec_helper.rb +0 -100
- data/spec/mspec-opal/formatters.rb +0 -236
- data/spec/mspec-opal/runner.rb +0 -173
- data/spec/opal/compiler/irb_spec.rb +0 -44
- data/spec/opal/core/arity_spec.rb +0 -142
- data/spec/opal/core/array/intersection_spec.rb +0 -38
- data/spec/opal/core/array/minus_spec.rb +0 -38
- data/spec/opal/core/array/select_spec.rb +0 -14
- data/spec/opal/core/array/set_range_to_array_spec.rb +0 -7
- data/spec/opal/core/array/union_spec.rb +0 -38
- data/spec/opal/core/array/uniq_spec.rb +0 -49
- data/spec/opal/core/date_spec.rb +0 -191
- data/spec/opal/core/enumerable/all_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/any_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/collect_break_spec.rb +0 -13
- data/spec/opal/core/enumerable/count_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/detect_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/drop_while_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/each_slice_break.rb +0 -6
- data/spec/opal/core/enumerable/each_with_index_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/each_with_object_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/find_all_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/find_index_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/grep_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/max_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/max_by_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/min_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/min_by_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/none_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/one_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/reduce_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/take_while_break_spec.rb +0 -5
- data/spec/opal/core/enumerator/with_index_spec.rb +0 -6
- data/spec/opal/core/exception_spec.rb +0 -30
- data/spec/opal/core/fixtures/class.rb +0 -124
- data/spec/opal/core/fixtures/class_variables.rb +0 -0
- data/spec/opal/core/fixtures/constants.rb +0 -33
- data/spec/opal/core/fixtures/require_tree_files/file 1.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/file 2.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/file 3.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/file 4.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/file 5.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +0 -3
- data/spec/opal/core/hash/has_value_spec.rb +0 -13
- data/spec/opal/core/hash/internals_spec.rb +0 -332
- data/spec/opal/core/helpers_spec.rb +0 -14
- data/spec/opal/core/kernel/Array_spec.rb +0 -10
- data/spec/opal/core/kernel/at_exit_spec.rb +0 -70
- data/spec/opal/core/kernel/block_given_spec.rb +0 -30
- data/spec/opal/core/kernel/class_spec.rb +0 -6
- data/spec/opal/core/kernel/define_singleton_method_spec.rb +0 -21
- data/spec/opal/core/kernel/equal_value_spec.rb +0 -12
- data/spec/opal/core/kernel/extend_spec.rb +0 -21
- data/spec/opal/core/kernel/format_spec.rb +0 -122
- data/spec/opal/core/kernel/freeze_spec.rb +0 -15
- data/spec/opal/core/kernel/instance_eval_spec.rb +0 -28
- data/spec/opal/core/kernel/instance_variable_defined_spec.rb +0 -15
- data/spec/opal/core/kernel/instance_variable_get_spec.rb +0 -14
- data/spec/opal/core/kernel/instance_variable_set_spec.rb +0 -10
- data/spec/opal/core/kernel/instance_variables_spec.rb +0 -110
- data/spec/opal/core/kernel/loop_spec.rb +0 -23
- data/spec/opal/core/kernel/match_spec.rb +0 -5
- data/spec/opal/core/kernel/method_spec.rb +0 -31
- data/spec/opal/core/kernel/methods_spec.rb +0 -25
- data/spec/opal/core/kernel/nil_spec.rb +0 -7
- data/spec/opal/core/kernel/p_spec.rb +0 -15
- data/spec/opal/core/kernel/printf_spec.rb +0 -11
- data/spec/opal/core/kernel/proc_spec.rb +0 -13
- data/spec/opal/core/kernel/raise_spec.rb +0 -13
- data/spec/opal/core/kernel/rand_spec.rb +0 -19
- data/spec/opal/core/kernel/require_tree_spec.rb +0 -18
- data/spec/opal/core/kernel/respond_to_spec.rb +0 -44
- data/spec/opal/core/kernel/send_spec.rb +0 -56
- data/spec/opal/core/kernel/sprintf_spec.rb +0 -5
- data/spec/opal/core/language/arguments/mlhs_arg_spec.rb +0 -19
- data/spec/opal/core/language/class_spec.rb +0 -55
- data/spec/opal/core/language/constant_lookup_spec.rb +0 -38
- data/spec/opal/core/language/equal_spec.rb +0 -8
- data/spec/opal/core/language/fixtures/array.rb +0 -11
- data/spec/opal/core/language/fixtures/block.rb +0 -57
- data/spec/opal/core/language/fixtures/break.rb +0 -240
- data/spec/opal/core/language/fixtures/ensure.rb +0 -72
- data/spec/opal/core/language/fixtures/literal_lambda.rb +0 -7
- data/spec/opal/core/language/fixtures/metaclass.rb +0 -33
- data/spec/opal/core/language/fixtures/module.rb +0 -24
- data/spec/opal/core/language/fixtures/next.rb +0 -128
- data/spec/opal/core/language/fixtures/return.rb +0 -118
- data/spec/opal/core/language/fixtures/send.rb +0 -111
- data/spec/opal/core/language/fixtures/send_1.9.rb +0 -22
- data/spec/opal/core/language/fixtures/super.rb +0 -308
- data/spec/opal/core/language/fixtures/variables.rb +0 -58
- data/spec/opal/core/language/fixtures/yield.rb +0 -28
- data/spec/opal/core/language/heredoc_spec.rb +0 -42
- data/spec/opal/core/language/keyword_arguments_spec.rb +0 -11
- data/spec/opal/core/language/predefined_spec.rb +0 -138
- data/spec/opal/core/language/regexp_spec.rb +0 -20
- data/spec/opal/core/language/rescue_spec.rb +0 -18
- data/spec/opal/core/language/safe_navigator_spec.rb +0 -7
- data/spec/opal/core/language/send_spec.rb +0 -222
- data/spec/opal/core/language/string_spec.rb +0 -44
- data/spec/opal/core/language/ternary_operator_spec.rb +0 -20
- data/spec/opal/core/language/versions/array_1.9.rb +0 -39
- data/spec/opal/core/language/versions/block_1.9.rb +0 -0
- data/spec/opal/core/language/versions/break_1.9.rb +0 -0
- data/spec/opal/core/language/versions/case_1.9.rb +0 -20
- data/spec/opal/core/language/versions/def_2_0_spec.rb +0 -58
- data/spec/opal/core/language/versions/hash_1_9_spec.rb +0 -23
- data/spec/opal/core/language/versions/literal_lambda_1.9.rb +0 -143
- data/spec/opal/core/language/versions/not_1.9.rb +0 -22
- data/spec/opal/core/language/versions/send_1.9.rb +0 -241
- data/spec/opal/core/language/versions/symbol_1.9.rb +0 -15
- data/spec/opal/core/language/versions/variables_1.9.rb +0 -8
- data/spec/opal/core/language_spec.rb +0 -77
- data/spec/opal/core/marshal/dump_spec.rb +0 -53
- data/spec/opal/core/marshal/load_spec.rb +0 -7
- data/spec/opal/core/method/to_proc_spec.rb +0 -28
- data/spec/opal/core/module/alias_method_spec.rb +0 -28
- data/spec/opal/core/module/ancestors_spec.rb +0 -11
- data/spec/opal/core/module/append_features_spec.rb +0 -14
- data/spec/opal/core/module/attr_accessor_spec.rb +0 -26
- data/spec/opal/core/module/const_defined_spec.rb +0 -84
- data/spec/opal/core/module/const_get_spec.rb +0 -85
- data/spec/opal/core/module/const_missing_spec.rb +0 -17
- data/spec/opal/core/module/const_set_spec.rb +0 -64
- data/spec/opal/core/module/constants_spec.rb +0 -49
- data/spec/opal/core/module/fixtures/classes.rb +0 -444
- data/spec/opal/core/module/method_defined_spec.rb +0 -48
- data/spec/opal/core/module/method_lookup_spec.rb +0 -13
- data/spec/opal/core/module/module_function_spec.rb +0 -25
- data/spec/opal/core/module/name_spec.rb +0 -41
- data/spec/opal/core/module/public_method_defined_spec.rb +0 -18
- data/spec/opal/core/module/remove_const_spec.rb +0 -22
- data/spec/opal/core/module/undef_method_spec.rb +0 -66
- data/spec/opal/core/numeric/bit_and_spec.rb +0 -7
- data/spec/opal/core/numeric/bit_or_spec.rb +0 -8
- data/spec/opal/core/numeric/bit_xor_spec.rb +0 -6
- data/spec/opal/core/numeric/ceil_spec.rb +0 -8
- data/spec/opal/core/numeric/chr_spec.rb +0 -8
- data/spec/opal/core/numeric/comparison_spec.rb +0 -24
- data/spec/opal/core/numeric/complement_spec.rb +0 -8
- data/spec/opal/core/numeric/divide_spec.rb +0 -10
- data/spec/opal/core/numeric/eql_spec.rb +0 -9
- data/spec/opal/core/numeric/exponent_spec.rb +0 -33
- data/spec/opal/core/numeric/floor_spec.rb +0 -8
- data/spec/opal/core/numeric/gt_spec.rb +0 -11
- data/spec/opal/core/numeric/gte_spec.rb +0 -12
- data/spec/opal/core/numeric/integer_spec.rb +0 -9
- data/spec/opal/core/numeric/left_shift_spec.rb +0 -21
- data/spec/opal/core/numeric/lt_spec.rb +0 -11
- data/spec/opal/core/numeric/lte_spec.rb +0 -12
- data/spec/opal/core/numeric/minus_spec.rb +0 -8
- data/spec/opal/core/numeric/modulo_spec.rb +0 -19
- data/spec/opal/core/numeric/multiply_spec.rb +0 -9
- data/spec/opal/core/numeric/next_spec.rb +0 -9
- data/spec/opal/core/numeric/ord_spec.rb +0 -9
- data/spec/opal/core/numeric/plus_spec.rb +0 -8
- data/spec/opal/core/numeric/pred_spec.rb +0 -7
- data/spec/opal/core/numeric/right_shift_spec.rb +0 -25
- data/spec/opal/core/numeric/step_spec.rb +0 -11
- data/spec/opal/core/numeric/succ_spec.rb +0 -9
- data/spec/opal/core/numeric/times_spec.rb +0 -36
- data/spec/opal/core/numeric/to_f_spec.rb +0 -7
- data/spec/opal/core/numeric/to_i_spec.rb +0 -7
- data/spec/opal/core/numeric/to_json_spec.rb +0 -8
- data/spec/opal/core/numeric/to_s_spec.rb +0 -26
- data/spec/opal/core/numeric/uminus_spec.rb +0 -9
- data/spec/opal/core/numeric/upto_spec.rb +0 -19
- data/spec/opal/core/numeric/zero_spec.rb +0 -7
- data/spec/opal/core/object_id_spec.rb +0 -56
- data/spec/opal/core/proc/call_spec.rb +0 -21
- data/spec/opal/core/proc/element_reference_spec.rb +0 -21
- data/spec/opal/core/proc/proc_tricks_spec.rb +0 -7
- data/spec/opal/core/runtime/begin_spec.rb +0 -39
- data/spec/opal/core/runtime/block_spec.rb +0 -23
- data/spec/opal/core/runtime/bridged_classes_spec.rb +0 -123
- data/spec/opal/core/runtime/constants_spec.rb +0 -13
- data/spec/opal/core/runtime/donate_spec.rb +0 -53
- data/spec/opal/core/runtime/eval_spec.rb +0 -5
- data/spec/opal/core/runtime/is_a_spec.rb +0 -36
- data/spec/opal/core/runtime/main_methods_spec.rb +0 -27
- data/spec/opal/core/runtime/method_missing_spec.rb +0 -68
- data/spec/opal/core/runtime/method_spec.rb +0 -31
- data/spec/opal/core/runtime/operator_call_spec.rb +0 -13
- data/spec/opal/core/runtime/paren_spec.rb +0 -14
- data/spec/opal/core/runtime/rescue_spec.rb +0 -106
- data/spec/opal/core/runtime/return_spec.rb +0 -38
- data/spec/opal/core/runtime/singleton_class_spec.rb +0 -13
- data/spec/opal/core/runtime/super_spec.rb +0 -223
- data/spec/opal/core/runtime/truthy_spec.rb +0 -63
- data/spec/opal/core/runtime/variables_spec.rb +0 -20
- data/spec/opal/core/runtime_spec.rb +0 -58
- data/spec/opal/core/source_map_spec.rb +0 -49
- data/spec/opal/core/string_spec.rb +0 -32
- data/spec/opal/core/time_spec.rb +0 -38
- data/spec/opal/javascript_api_spec.rb +0 -16
- data/spec/opal/stdlib/erb/erb_spec.rb +0 -30
- data/spec/opal/stdlib/erb/inline_block.opalerb +0 -3
- data/spec/opal/stdlib/erb/quoted.opalerb +0 -1
- data/spec/opal/stdlib/erb/simple.opalerb +0 -1
- data/spec/opal/stdlib/js_spec.rb +0 -66
- data/spec/opal/stdlib/json/ext_spec.rb +0 -48
- data/spec/opal/stdlib/json/parse_spec.rb +0 -37
- data/spec/opal/stdlib/native/alias_native_spec.rb +0 -27
- data/spec/opal/stdlib/native/array_spec.rb +0 -11
- data/spec/opal/stdlib/native/each_spec.rb +0 -13
- data/spec/opal/stdlib/native/element_reference_spec.rb +0 -16
- data/spec/opal/stdlib/native/exposure_spec.rb +0 -33
- data/spec/opal/stdlib/native/ext_spec.rb +0 -19
- data/spec/opal/stdlib/native/hash_spec.rb +0 -67
- data/spec/opal/stdlib/native/initialize_spec.rb +0 -17
- data/spec/opal/stdlib/native/method_missing_spec.rb +0 -51
- data/spec/opal/stdlib/native/native_alias_spec.rb +0 -19
- data/spec/opal/stdlib/native/native_class_spec.rb +0 -18
- data/spec/opal/stdlib/native/native_module_spec.rb +0 -13
- data/spec/opal/stdlib/native/native_reader_spec.rb +0 -22
- data/spec/opal/stdlib/native/native_writer_spec.rb +0 -30
- data/spec/opal/stdlib/native/new_spec.rb +0 -92
- data/spec/opal/stdlib/native/struct_spec.rb +0 -12
- data/spec/opal/stdlib/promise/always_spec.rb +0 -49
- data/spec/opal/stdlib/promise/error_spec.rb +0 -15
- data/spec/opal/stdlib/promise/rescue_spec.rb +0 -53
- data/spec/opal/stdlib/promise/then_spec.rb +0 -79
- data/spec/opal/stdlib/promise/trace_spec.rb +0 -51
- data/spec/opal/stdlib/promise/value_spec.rb +0 -15
- data/spec/opal/stdlib/promise/when_spec.rb +0 -34
- data/spec/opal/stdlib/source_map_spec.rb +0 -8
- data/spec/opal/stdlib/strscan/scan_spec.rb +0 -11
- data/spec/opal/stdlib/template/paths_spec.rb +0 -10
- data/spec/opal/stdlib/thread/mutex_spec.rb +0 -40
- data/spec/opal/stdlib/thread/thread_queue_spec.rb +0 -32
- data/spec/opal/stdlib/thread/thread_spec.rb +0 -60
- data/spec/ruby_specs +0 -122
- data/spec/spec_helper.rb +0 -27
- data/spec/support/match_helpers.rb +0 -57
- data/spec/support/mspec_rspec_adapter.rb +0 -33
- data/spec/support/rewriters_helper.rb +0 -24
- data/stdlib/phantomjs.rb +0 -17
- data/tasks/testing/sprockets-phantomjs.js +0 -54
- data/test/nodejs/fixtures/hello.rb +0 -1
- data/test/nodejs/test_dir.rb +0 -17
- data/test/nodejs/test_file.rb +0 -87
- data/test/nodejs/test_io.rb +0 -18
- data/test/nodejs/test_opal_builder.rb +0 -12
- data/test/opal/test_keyword.rb +0 -590
- data/test/opal/unsupported_and_bugs.rb +0 -39
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 031fb6b695b92330faf6fda3d93b6fddb84e8c90
|
|
4
|
+
data.tar.gz: f44d491f731708162c5ab566be18514aa1d3567d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6af49d8a0000654461f171748688bbf39dc21d5e8bcec76414ea7eaa65fd45ad3b5b2fdfcbf7cfbbd8dac47f0f96cc671547b2e36bbff399f15461c7304f1464
|
|
7
|
+
data.tar.gz: f68f7d5581668620ce96ef7766266a62f003d785ae934f515f7ddb2e67f4443793f354475e89e9153882af82baaafc4a96d3474f9a4a43edeb961e1ba91e94a2
|
data/.jshintrc
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"undef" : true, // Prohibit the use of explicitly undeclared variables
|
|
11
11
|
"unused" : true, // Warn when you define and never use your variables
|
|
12
12
|
|
|
13
|
-
"predef" : ["Opal", "JSON", "Java", "
|
|
13
|
+
"predef" : ["Opal", "JSON", "Java", "OpalNode", "jsyaml"],
|
|
14
14
|
|
|
15
15
|
"browser": true,
|
|
16
16
|
"node": true,
|
data/.travis.yml
CHANGED
|
@@ -2,6 +2,10 @@ language: ruby
|
|
|
2
2
|
|
|
3
3
|
sudo: false
|
|
4
4
|
|
|
5
|
+
dist: trusty
|
|
6
|
+
addons:
|
|
7
|
+
chrome: stable
|
|
8
|
+
|
|
5
9
|
cache:
|
|
6
10
|
bundler: true
|
|
7
11
|
directories:
|
|
@@ -12,6 +16,12 @@ matrix:
|
|
|
12
16
|
fast_finish: true
|
|
13
17
|
|
|
14
18
|
include:
|
|
19
|
+
- rvm: 2.4.0
|
|
20
|
+
env: RUN=mspec_opal_chrome
|
|
21
|
+
|
|
22
|
+
- rvm: 2.4.0
|
|
23
|
+
env: RUN=mspec_ruby_chrome
|
|
24
|
+
|
|
15
25
|
# - rvm: 2.4.0
|
|
16
26
|
# env:
|
|
17
27
|
# - RUN=browser_test
|
|
@@ -65,14 +75,16 @@ matrix:
|
|
|
65
75
|
|
|
66
76
|
|
|
67
77
|
before_install:
|
|
68
|
-
# Keep track of which version of node
|
|
78
|
+
# Keep track of which version of node we're running the specs against
|
|
69
79
|
- node -v
|
|
70
|
-
- phantomjs -v
|
|
71
80
|
- git submodule update --init
|
|
72
81
|
- npm install -g jshint
|
|
73
82
|
- npm install -g uglify-js
|
|
74
83
|
- type bundle || gem install bundler
|
|
75
84
|
- bundle config without doc
|
|
85
|
+
- which google-chrome-stable
|
|
86
|
+
- google-chrome-stable --version
|
|
87
|
+
- export RUBYOPT=-w
|
|
76
88
|
|
|
77
89
|
script:
|
|
78
90
|
- "bundle exec rake $RUN"
|
data/CHANGELOG.md
CHANGED
|
@@ -63,6 +63,7 @@ Whitespace conventions:
|
|
|
63
63
|
### Removed
|
|
64
64
|
|
|
65
65
|
- Dropped support for IE8 and below, and restricted Safari and Opera support to the last two versions
|
|
66
|
+
- Dropped support for PhantomJS as it was [abandoned](https://groups.google.com/forum/#!topic/phantomjs/9aI5d-LDuNE).
|
|
66
67
|
|
|
67
68
|
|
|
68
69
|
### Changed
|
|
@@ -122,20 +123,32 @@ Whitespace conventions:
|
|
|
122
123
|
|
|
123
124
|
|
|
124
125
|
|
|
125
|
-
|
|
126
|
+
|
|
127
|
+
## [0.10.5] - 2017-06-21
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
### Fixed
|
|
131
|
+
|
|
132
|
+
- Fix `Time#zone` for zones expressed numerically
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
## [0.10.4] - 2017-05-07
|
|
126
138
|
|
|
127
139
|
|
|
128
140
|
### Changed
|
|
129
141
|
|
|
130
|
-
-
|
|
142
|
+
- Better `Opal::Config` options documentation and organization
|
|
143
|
+
- Always cache source-maps at build-time so they're available once enabled
|
|
131
144
|
|
|
132
145
|
|
|
133
146
|
|
|
134
147
|
|
|
135
|
-
## [0.10.
|
|
148
|
+
## [0.10.3] - 2016-10-31
|
|
136
149
|
|
|
137
150
|
|
|
138
|
-
|
|
151
|
+
### Fixed
|
|
139
152
|
|
|
140
153
|
- Fixed inheritance from the `Module` class (#1476)
|
|
141
154
|
- Fixed source map server with url-encoded paths
|
|
@@ -145,6 +158,16 @@ Whitespace conventions:
|
|
|
145
158
|
|
|
146
159
|
|
|
147
160
|
|
|
161
|
+
## [0.10.2] - 2016-09-09
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
### Changed
|
|
165
|
+
|
|
166
|
+
- Avoid special utf-8 chars in method names, now they start with `$$`
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
148
171
|
## [0.10.1] - 2016-07-06
|
|
149
172
|
|
|
150
173
|
|
|
@@ -983,7 +1006,9 @@ Whitespace conventions:
|
|
|
983
1006
|
|
|
984
1007
|
|
|
985
1008
|
|
|
986
|
-
[0.11.0]: https://github.com/opal/opal/compare/v0.10.
|
|
1009
|
+
[0.11.0]: https://github.com/opal/opal/compare/v0.10.5...HEAD
|
|
1010
|
+
[0.10.5]: https://github.com/opal/opal/compare/v0.10.4...v0.10.5
|
|
1011
|
+
[0.10.4]: https://github.com/opal/opal/compare/v0.10.3...v0.10.4
|
|
987
1012
|
[0.10.3]: https://github.com/opal/opal/compare/v0.10.2...v0.10.3
|
|
988
1013
|
[0.10.2]: https://github.com/opal/opal/compare/v0.10.1...v0.10.2
|
|
989
1014
|
[0.10.1]: https://github.com/opal/opal/compare/v0.10.0...v0.10.1
|
data/HACKING.md
CHANGED
|
@@ -202,7 +202,7 @@ To enable debug output in the Racc grammar set the `RACC_DEBUG` env var and reco
|
|
|
202
202
|
```bash
|
|
203
203
|
$ export RACC_DEBUG=true
|
|
204
204
|
$ bundle exec rake racc # recompile the grammar
|
|
205
|
-
$ bundle exec
|
|
205
|
+
$ bundle exec exe/opal --sexp -e "42" # ask Opal for the SExp of some code
|
|
206
206
|
|
|
207
207
|
read :tINTEGER(tINTEGER) [42, [1, 0]]
|
|
208
208
|
|
|
@@ -227,6 +227,6 @@ When done unset the env variable and recompile the grammar.
|
|
|
227
227
|
```bash
|
|
228
228
|
$ unset RACC_DEBUG
|
|
229
229
|
$ bundle exec rake racc # recompile the grammar
|
|
230
|
-
$ bundle exec
|
|
230
|
+
$ bundle exec exe/opal --sexp -e "42" # ask Opal for the SExp of some code
|
|
231
231
|
(:int, 42)
|
|
232
232
|
```
|
data/README.md
CHANGED
|
@@ -70,7 +70,7 @@ string of JavaScript code.
|
|
|
70
70
|
Opal.compile("puts 'wow'") # => "(function() { ... self.$puts("wow"); ... })()"
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
Running this by itself is not enough
|
|
73
|
+
Running this by itself is not enough; you need the opal runtime/corelib.
|
|
74
74
|
|
|
75
75
|
#### Using Opal::Builder
|
|
76
76
|
|
|
@@ -119,8 +119,8 @@ your web applications.
|
|
|
119
119
|
Just open this page and check the JavaScript console.
|
|
120
120
|
|
|
121
121
|
**NOTE**: Although this is possible, this is not really recommended for
|
|
122
|
-
production and should only be used as a quick way to
|
|
123
|
-
on opal
|
|
122
|
+
production and should only be used as a quick way to get your hands
|
|
123
|
+
on opal.
|
|
124
124
|
|
|
125
125
|
## Running tests
|
|
126
126
|
|
|
@@ -133,7 +133,7 @@ Then, install dependencies:
|
|
|
133
133
|
$ bundle install
|
|
134
134
|
$ npm install -g jshint
|
|
135
135
|
|
|
136
|
-
The test suite can be run using
|
|
136
|
+
The test suite can be run using:
|
|
137
137
|
|
|
138
138
|
$ bundle exec rake
|
|
139
139
|
|
|
@@ -231,6 +231,5 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
|
231
231
|
THE SOFTWARE.
|
|
232
232
|
|
|
233
233
|
|
|
234
|
-
[phantomjs]: http://phantomjs.org
|
|
235
234
|
[MSpec]: https://github.com/ruby/mspec#readme
|
|
236
235
|
[RSpec]: https://github.com/rspec/rspec#readme
|
data/appveyor.yml
CHANGED
|
@@ -19,12 +19,11 @@ install:
|
|
|
19
19
|
- ruby --version
|
|
20
20
|
- gem --version
|
|
21
21
|
- node --version
|
|
22
|
-
- gem install bundler --quiet --no-ri --no-rdoc
|
|
23
22
|
- bundler --version
|
|
24
23
|
- bundle
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
|
|
27
25
|
build: off
|
|
28
26
|
|
|
27
|
+
# TODO: add mspec_chrome and minitest_chrome once Chrome 60 will be released
|
|
29
28
|
test_script:
|
|
30
|
-
- bundle exec rake
|
|
29
|
+
- bundle exec rake rspec mspec_nodejs minitest_nodejs minitest_node_nodejs
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Headless Chrome
|
|
2
|
+
|
|
3
|
+
## Requirements
|
|
4
|
+
|
|
5
|
+
First of all, make sure that you have Chrome at least 59.0 installed.
|
|
6
|
+
Also for now it's supported only on Mac and Linux. (version 60 may get support on Windows)
|
|
7
|
+
|
|
8
|
+
## Using the runner
|
|
9
|
+
|
|
10
|
+
To run your code using headless chrome, use `-R chrome` (`--runner chrome`) option:
|
|
11
|
+
|
|
12
|
+
$ opal -Rchrome -e "puts 'Hello, Opal'"
|
|
13
|
+
Hello, Opal
|
|
14
|
+
|
|
15
|
+
The runner also listens for any exceptions and prints formatted stracktraces back to your console:
|
|
16
|
+
|
|
17
|
+
$ opal -Rchrome -e "
|
|
18
|
+
def raising_method
|
|
19
|
+
raise 'test error'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
raising_method
|
|
23
|
+
"
|
|
24
|
+
|
|
25
|
+
RuntimeError : test error
|
|
26
|
+
at $$raise (file:///tmp/chrome-opal.js:4996:6)
|
|
27
|
+
at $$raising_method (file:///tmp/chrome-opal.js:21144:16)
|
|
28
|
+
at (file:///tmp/chrome-opal.js:21146:14)
|
|
29
|
+
at (file:///tmp/chrome-opal.js:21147:2)
|
|
30
|
+
|
|
31
|
+
## Using exit codes
|
|
32
|
+
|
|
33
|
+
By default headless chrome runner explicitly sets exit code to 1 when there was any error in the code.
|
|
34
|
+
|
|
35
|
+
$ opal -Rchrome -e "42"; echo $?
|
|
36
|
+
0
|
|
37
|
+
|
|
38
|
+
$ opal -Rchrome -e "raise 'error'"; echo $?
|
|
39
|
+
RuntimeError : error
|
|
40
|
+
at $$raise (file:///tmp/chrome-opal.js:4996:6)
|
|
41
|
+
at (file:///tmp/chrome-opal.js:21139:14)
|
|
42
|
+
at (file:///tmp/chrome-opal.js:21140:2)
|
|
43
|
+
1
|
|
44
|
+
|
|
45
|
+
You can change final exit code by using `Kernel#exit`, but make sure to require `opal/platform` in your code.
|
|
46
|
+
|
|
47
|
+
$ opal -Rchrome -ropal/platform -e "exit(0)"; echo $?
|
|
48
|
+
0
|
|
49
|
+
|
|
50
|
+
$ opal -Rchrome -ropal/platform -e "exit(1)"; echo $?
|
|
51
|
+
1
|
|
52
|
+
|
|
53
|
+
Also `Kernel#exit` doesn't abort your script. It simply takes the value that was passed to the first
|
|
54
|
+
invocation and persists it in `window.OPAL_EXIT_CODE`. Later headless chrome runner extracts it from the chrome runtime.
|
|
55
|
+
|
|
56
|
+
## Known limitations
|
|
57
|
+
|
|
58
|
+
1. `exit` doesn't abort you script (but `raise/throw` does)
|
|
59
|
+
2. When you call `console.log(one, two, three)` from your code headless chrome prints only the first passed object.
|
|
60
|
+
The reason behind it is the format of the message that chrome sends to the runner.
|
|
61
|
+
Opal intentionally uses a simplified method from Chrome API (`Console.messageAdded`) to catch `console.log` invocations.
|
|
62
|
+
(Check `lib/opal/cli_runners/chrome.js` do get more information)
|
|
63
|
+
|
|
64
|
+
## Internals
|
|
65
|
+
|
|
66
|
+
Under the hood when you call `opal -Rchrome -e 'your code'` Opal uses chrome runner that is defined in
|
|
67
|
+
`lib/opal/cli_runners/chrome.rb`. This runner tries to connect to `localhost:9222` (9222 is a default port for a headless chrome server)
|
|
68
|
+
or runs the server on its own. It detects your platform and uses a default path to the chrome executable
|
|
69
|
+
(`Opal::CliRunners::Chrome#chrome_executable`) but you can override it by specifying `GOOGLE_CHROME_BINARY` environment
|
|
70
|
+
variable.
|
|
71
|
+
|
|
72
|
+
When the server is up and running it passes compiled js code to `node lib/opal/cli_runners/chrome.js`
|
|
73
|
+
as a plain input using stdin (basically, it's a second part of the runner).
|
|
74
|
+
`chrome.js` is a node js script that does the main job. It runs any provided code on the running chrome server,
|
|
75
|
+
catches errors and forwards console messages.
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
Moreover, you can actually call any js using headless chrome by running
|
|
79
|
+
|
|
80
|
+
$ echo "console.log('Hello, Opal')" | node lib/opal/cli_runners/chrome.js
|
|
81
|
+
|
|
82
|
+
NOTE: to run it you need to have a chrome server running on `localhost:9222` (usually `chrome.rb` does it for you)
|
|
83
|
+
|
|
84
|
+
$ chrome --disable-gpu --headless --remote-debugging-port=9222
|
|
85
|
+
|
|
86
|
+
## Using a remote chrome server
|
|
87
|
+
|
|
88
|
+
If you want to change a default chrome port or your chrome server is running on a different host:port
|
|
89
|
+
you can override default values by specifying `CHROME_HOST` and `CHROME_PORT` environment variables:
|
|
90
|
+
|
|
91
|
+
$ CHROME_HOST=10.10.10.10 CHROME_PORT=8080 opal -Rchrome -e "puts 42"
|
|
92
|
+
Connecting to 10.10.10.10:8080...
|
|
93
|
+
42
|
|
94
|
+
|
|
95
|
+
NOTE: `CHROME_HOST` requires a chrome server to be started. You can't start remotely a server on a different host.
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## Additional options
|
|
99
|
+
|
|
100
|
+
If you need to pass additional CLI options to the Chrome executable you can do so by setting the `CHROME_OPTS` environment variable:
|
|
101
|
+
|
|
102
|
+
$ CHROME_OPS="--window-size=412,732" opal -Rchrome -e "puts 42"
|
|
103
|
+
42
|
|
104
|
+
|
|
105
|
+
_For a list of additional options see https://developers.google.com/web/updates/2017/04/headless-chrome_
|
data/docs/rspec.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# RSpec
|
|
2
2
|
|
|
3
3
|
`opal-rspec` allows opal to use rspec for running specs in javascript
|
|
4
|
-
environments. It comes with built-in support for running rspec with
|
|
5
|
-
|
|
4
|
+
environments. It comes with built-in support for running rspec with
|
|
5
|
+
standard web browser formatters. Also, async spec examples
|
|
6
6
|
are supported to reflect browser usage of ruby applications.
|
|
7
7
|
|
|
8
8
|
```ruby
|
|
@@ -25,23 +25,6 @@ gem 'opal-rspec'
|
|
|
25
25
|
|
|
26
26
|
## Running specs
|
|
27
27
|
|
|
28
|
-
### phantomjs
|
|
29
|
-
|
|
30
|
-
To run specs, a rake task can be added which will load all spec files
|
|
31
|
-
from `spec/`:
|
|
32
|
-
|
|
33
|
-
```ruby
|
|
34
|
-
# Rakefile
|
|
35
|
-
require 'opal/rspec/rake_task'
|
|
36
|
-
Opal::RSpec::RakeTask.new(:default)
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Then, to run your specs inside phantomjs, just run the rake task:
|
|
40
|
-
|
|
41
|
-
```sh
|
|
42
|
-
$ bundle exec rake
|
|
43
|
-
```
|
|
44
|
-
|
|
45
28
|
### In a Browser
|
|
46
29
|
|
|
47
30
|
`opal-rspec` can use sprockets to build and serve specs over a simple rack server. Add the following to a `config.ru` file:
|
data/{bin → exe}/opal
RENAMED
|
File without changes
|
data/{bin → exe}/opal-build
RENAMED
|
File without changes
|
data/{bin → exe}/opal-mspec
RENAMED
|
File without changes
|
data/{bin → exe}/opal-repl
RENAMED
|
File without changes
|
data/lib/opal.rb
CHANGED
data/lib/opal/ast/builder.rb
CHANGED
data/lib/opal/builder.rb
CHANGED
|
@@ -1,17 +1,62 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
require 'opal/path_reader'
|
|
3
|
-
require 'opal/builder_processors'
|
|
4
3
|
require 'opal/paths'
|
|
5
4
|
require 'opal/config'
|
|
6
5
|
require 'set'
|
|
7
6
|
|
|
8
7
|
module Opal
|
|
9
8
|
class Builder
|
|
10
|
-
|
|
9
|
+
# The registered processors
|
|
10
|
+
def self.processors
|
|
11
|
+
@processors ||= []
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# All the extensions supported by registered processors
|
|
15
|
+
def self.extensions
|
|
16
|
+
@extensions ||= []
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @public
|
|
20
|
+
# Register a builder processor and the supported extensions.
|
|
21
|
+
# A processor will respond to:
|
|
22
|
+
#
|
|
23
|
+
# ## `#requires`
|
|
24
|
+
# An array of string containing the logic paths of required assets
|
|
25
|
+
#
|
|
26
|
+
# ## `#required_trees`
|
|
27
|
+
# An array of string containing the logic paths of required directories
|
|
28
|
+
#
|
|
29
|
+
# ## `#to_s`
|
|
30
|
+
# The processed source
|
|
31
|
+
#
|
|
32
|
+
# ## `#source_map`
|
|
33
|
+
# An instance of `::SourceMap::Map` representing the processd asset's source
|
|
34
|
+
# map.
|
|
35
|
+
#
|
|
36
|
+
# ## `.new(source, filename, compiler_options)`
|
|
37
|
+
# The processor will be instantiated passing:
|
|
38
|
+
# - the unprocessed source
|
|
39
|
+
# - the asset's filename
|
|
40
|
+
# - Opal's compiler options
|
|
41
|
+
#
|
|
42
|
+
# ## `.match?(path)`
|
|
43
|
+
# The processor is able to recognize paths suitable for its type of
|
|
44
|
+
# processing.
|
|
45
|
+
#
|
|
46
|
+
def self.register_processor(processor, processor_extensions)
|
|
47
|
+
return if processors.include?(processor)
|
|
48
|
+
processors << processor
|
|
49
|
+
processor_extensions.each { |ext| extensions << ext }
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
|
|
11
53
|
|
|
12
54
|
class MissingRequire < LoadError
|
|
13
55
|
end
|
|
14
56
|
|
|
57
|
+
class ProcessorNotFound < LoadError
|
|
58
|
+
end
|
|
59
|
+
|
|
15
60
|
def initialize(options = nil)
|
|
16
61
|
(options || {}).each_pair do |k,v|
|
|
17
62
|
public_send("#{k}=", v)
|
|
@@ -19,11 +64,10 @@ module Opal
|
|
|
19
64
|
|
|
20
65
|
@stubs ||= []
|
|
21
66
|
@preload ||= []
|
|
22
|
-
@processors ||=
|
|
23
|
-
@path_reader ||= PathReader.new
|
|
67
|
+
@processors ||= ::Opal::Builder.processors
|
|
68
|
+
@path_reader ||= PathReader.new(Opal.paths, extensions.map{|e| [".#{e}", ".js.#{e}"]}.flatten)
|
|
24
69
|
@prerequired ||= []
|
|
25
70
|
@compiler_options ||= Opal::Config.compiler_options
|
|
26
|
-
@default_processor ||= RubyProcessor
|
|
27
71
|
|
|
28
72
|
@processed = []
|
|
29
73
|
end
|
|
@@ -38,7 +82,7 @@ module Opal
|
|
|
38
82
|
end
|
|
39
83
|
|
|
40
84
|
def build_str source, filename, options = {}
|
|
41
|
-
path =
|
|
85
|
+
path = path_from_filename(filename)
|
|
42
86
|
asset = processor_for(source, filename, path, options)
|
|
43
87
|
requires = preload + asset.requires + tree_requires(asset, path)
|
|
44
88
|
requires.map { |r| process_require(r, options) }
|
|
@@ -79,9 +123,8 @@ module Opal
|
|
|
79
123
|
|
|
80
124
|
attr_reader :processed
|
|
81
125
|
|
|
82
|
-
attr_accessor :processors, :
|
|
83
|
-
:
|
|
84
|
-
|
|
126
|
+
attr_accessor :processors, :path_reader, :compiler_options,
|
|
127
|
+
:stubs, :prerequired, :preload
|
|
85
128
|
|
|
86
129
|
|
|
87
130
|
|
|
@@ -110,14 +153,20 @@ module Opal
|
|
|
110
153
|
end
|
|
111
154
|
|
|
112
155
|
def processor_for(source, filename, path, options)
|
|
113
|
-
processor
|
|
114
|
-
|
|
115
|
-
|
|
156
|
+
processor = processors.find { |p| p.match? path } or
|
|
157
|
+
raise ProcessorNotFound, "can't find processor for filename: #{filename.inspect}, path: #{path.inspect}, source: #{source.inspect}, processors: #{processors.inspect}"
|
|
158
|
+
processor.new(source, filename, compiler_options.merge(options))
|
|
116
159
|
end
|
|
117
160
|
|
|
118
161
|
def read(path)
|
|
119
162
|
path_reader.read(path) or begin
|
|
120
|
-
|
|
163
|
+
print_list = lambda { |list| "- #{list.join("\n- ")}\n" }
|
|
164
|
+
message = "can't find file: #{path.inspect} in:\n"+
|
|
165
|
+
print_list[path_reader.paths]+
|
|
166
|
+
"\nWith the following extensions:\n"+
|
|
167
|
+
print_list[path_reader.extensions]+
|
|
168
|
+
"\nAnd the following processors:\n"+
|
|
169
|
+
print_list[processors]
|
|
121
170
|
|
|
122
171
|
case compiler_options[:dynamic_require_severity]
|
|
123
172
|
when :raise then raise MissingRequire, message
|
|
@@ -145,12 +194,17 @@ module Opal
|
|
|
145
194
|
end
|
|
146
195
|
end
|
|
147
196
|
|
|
148
|
-
path =
|
|
197
|
+
path = path_from_filename(filename)
|
|
149
198
|
asset = processor_for(source, filename, path, options.merge(requirable: true))
|
|
150
199
|
process_requires(filename, asset.requires+tree_requires(asset, path), options)
|
|
151
200
|
processed << asset
|
|
152
201
|
end
|
|
153
202
|
|
|
203
|
+
def path_from_filename(filename)
|
|
204
|
+
return if stub?(filename)
|
|
205
|
+
(path_reader.expand(filename) || File.expand_path(filename)).to_s
|
|
206
|
+
end
|
|
207
|
+
|
|
154
208
|
def process_requires(filename, requires, options)
|
|
155
209
|
requires.map { |r| process_require(r, options) }
|
|
156
210
|
rescue MissingRequire => error
|
|
@@ -166,7 +220,7 @@ module Opal
|
|
|
166
220
|
end
|
|
167
221
|
|
|
168
222
|
def extensions
|
|
169
|
-
|
|
223
|
+
::Opal::Builder.extensions
|
|
170
224
|
end
|
|
171
225
|
end
|
|
172
226
|
end
|