opal 0.11.0.rc1 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
data/opal/corelib/runtime.js
CHANGED
@@ -110,7 +110,7 @@
|
|
110
110
|
Opal.gvars = {};
|
111
111
|
|
112
112
|
// Exit function, this should be replaced by platform specific implementation
|
113
|
-
// (See nodejs and
|
113
|
+
// (See nodejs and chrome for examples)
|
114
114
|
Opal.exit = function(status) { if (Opal.gvars.DEBUG) console.log('Exited with status '+status); };
|
115
115
|
|
116
116
|
// keeps track of exceptions for $!
|
@@ -139,6 +139,18 @@
|
|
139
139
|
}
|
140
140
|
|
141
141
|
|
142
|
+
// Truth
|
143
|
+
// -----
|
144
|
+
|
145
|
+
Opal.truthy = function(val) {
|
146
|
+
return (val !== nil && val != null && (!val.$$is_boolean || val == true));
|
147
|
+
};
|
148
|
+
|
149
|
+
Opal.falsy = function(val) {
|
150
|
+
return (val === nil || val == null || (val.$$is_boolean && val == false))
|
151
|
+
};
|
152
|
+
|
153
|
+
|
142
154
|
// Constants
|
143
155
|
// ---------
|
144
156
|
//
|
@@ -229,10 +241,8 @@
|
|
229
241
|
throw new Opal.TypeError(cref.toString() + " is not a class/module");
|
230
242
|
}
|
231
243
|
|
232
|
-
if (cref.$$const_cache == null) {
|
244
|
+
if ((cache = cref.$$const_cache) == null) {
|
233
245
|
cache = cref.$$const_cache = Object.create(null);
|
234
|
-
} else {
|
235
|
-
cache = cref.$$const_cache;
|
236
246
|
}
|
237
247
|
cached = cache[name];
|
238
248
|
|
@@ -255,10 +265,8 @@
|
|
255
265
|
Opal.const_get_relative = function(nesting, name, skip_missing) {
|
256
266
|
var cref = nesting[0], result, current_version = Opal.const_cache_version, cache, cached;
|
257
267
|
|
258
|
-
if (nesting.$$const_cache == null) {
|
268
|
+
if ((cache = nesting.$$const_cache) == null) {
|
259
269
|
cache = nesting.$$const_cache = Object.create(null);
|
260
|
-
} else {
|
261
|
-
cache = nesting.$$const_cache;
|
262
270
|
}
|
263
271
|
cached = cache[name];
|
264
272
|
|
@@ -1651,6 +1659,7 @@
|
|
1651
1659
|
obj.$$proto[jsid] = body;
|
1652
1660
|
// for super dispatcher, etc.
|
1653
1661
|
body.$$owner = obj;
|
1662
|
+
if (body.displayName == null) body.displayName = jsid.substr(1);
|
1654
1663
|
|
1655
1664
|
// is it a module?
|
1656
1665
|
if (obj.$$is_module) {
|
@@ -2084,7 +2093,7 @@
|
|
2084
2093
|
var range = new Opal.Range.$$alloc();
|
2085
2094
|
range.begin = first;
|
2086
2095
|
range.end = last;
|
2087
|
-
range.
|
2096
|
+
range.excl = exc;
|
2088
2097
|
|
2089
2098
|
return range;
|
2090
2099
|
};
|
@@ -2144,6 +2153,7 @@
|
|
2144
2153
|
path = Opal.current_dir.replace(/\/*$/, '/') + path;
|
2145
2154
|
}
|
2146
2155
|
|
2156
|
+
path = path.replace(/^\.\//, '');
|
2147
2157
|
path = path.replace(/\.(rb|opal|js)$/, '');
|
2148
2158
|
parts = path.split(SEPARATOR);
|
2149
2159
|
|
@@ -2251,7 +2261,13 @@
|
|
2251
2261
|
|
2252
2262
|
// Forward .toString() to #to_s
|
2253
2263
|
_Object.$$proto.toString = function() {
|
2254
|
-
|
2264
|
+
var to_s = this.$to_s();
|
2265
|
+
if (to_s.$$is_string && typeof(to_s) === 'object') {
|
2266
|
+
// a string created using new String('string')
|
2267
|
+
return to_s.valueOf();
|
2268
|
+
} else {
|
2269
|
+
return to_s;
|
2270
|
+
}
|
2255
2271
|
};
|
2256
2272
|
|
2257
2273
|
// Make Kernel#require immediately available as it's needed to require all the
|
data/opal/corelib/string.rb
CHANGED
@@ -131,7 +131,7 @@ class String < `String`
|
|
131
131
|
var size = self.length, exclude;
|
132
132
|
|
133
133
|
if (index.$$is_range) {
|
134
|
-
exclude = index.
|
134
|
+
exclude = index.excl;
|
135
135
|
length = #{Opal.coerce_to(`index.end`, Integer, :to_int)};
|
136
136
|
index = #{Opal.coerce_to(`index.begin`, Integer, :to_int)};
|
137
137
|
|
@@ -1,30 +1,26 @@
|
|
1
1
|
require 'corelib/string'
|
2
2
|
|
3
3
|
class Encoding
|
4
|
+
self.JS['$$register'] = `{}`
|
5
|
+
|
4
6
|
def self.register(name, options = {}, &block)
|
5
7
|
names = [name] + (options[:aliases] || [])
|
6
8
|
encoding = Class.new(self, &block).
|
7
9
|
new(name, names, options[:ascii] || false, options[:dummy] || false)
|
8
10
|
|
9
|
-
|
11
|
+
register = self.JS['$$register']
|
12
|
+
names.each do |name|
|
10
13
|
const_set name.sub('-', '_'), encoding
|
11
|
-
|
14
|
+
register.JS["$$#{name}"] = encoding
|
15
|
+
end
|
12
16
|
end
|
13
17
|
|
14
18
|
def self.find(name)
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
next unless Encoding === encoding
|
21
|
-
|
22
|
-
if encoding.name == upcase || encoding.names.include?(upcase)
|
23
|
-
return encoding
|
24
|
-
end
|
25
|
-
}
|
26
|
-
|
27
|
-
raise ArgumentError, "unknown encoding name - #{name}"
|
19
|
+
return default_external if name == :default_external
|
20
|
+
register = self.JS['$$register']
|
21
|
+
encoding = register.JS["$$#{name}"] || register.JS["$$#{name.upcase}"]
|
22
|
+
raise ArgumentError, "unknown encoding name - #{name}" unless encoding
|
23
|
+
encoding
|
28
24
|
end
|
29
25
|
|
30
26
|
class << self
|
@@ -149,11 +145,13 @@ Encoding.register "UTF-32LE" do
|
|
149
145
|
end
|
150
146
|
end
|
151
147
|
|
152
|
-
Encoding.register "ASCII-8BIT", aliases: ["BINARY"], ascii: true do
|
148
|
+
Encoding.register "ASCII-8BIT", aliases: ["BINARY", "US-ASCII", "ASCII"], ascii: true, dummy: true do
|
153
149
|
def each_byte(string, &block)
|
154
150
|
%x{
|
155
151
|
for (var i = 0, length = string.length; i < length; i++) {
|
156
|
-
|
152
|
+
var code = string.charCodeAt(i);
|
153
|
+
#{yield `code & 0xff`};
|
154
|
+
#{yield `code >> 8`};
|
157
155
|
}
|
158
156
|
}
|
159
157
|
end
|
@@ -192,21 +190,15 @@ class String
|
|
192
190
|
|
193
191
|
def force_encoding(encoding)
|
194
192
|
%x{
|
195
|
-
if (encoding === self.encoding) {
|
196
|
-
return self;
|
197
|
-
}
|
198
|
-
}
|
199
|
-
encoding = Opal.coerce_to!(encoding, String, :to_s)
|
200
|
-
encoding = Encoding.find(encoding)
|
193
|
+
if (encoding === self.encoding) { return self; }
|
201
194
|
|
202
|
-
|
203
|
-
|
195
|
+
encoding = #{Opal.coerce_to!(encoding, String, :to_s)};
|
196
|
+
encoding = #{Encoding.find(encoding)};
|
204
197
|
|
205
|
-
|
206
|
-
var result = new String(self);
|
207
|
-
result.encoding = encoding;
|
198
|
+
if (encoding === self.encoding) { return self; }
|
208
199
|
|
209
|
-
|
200
|
+
self.encoding = encoding;
|
201
|
+
return self;
|
210
202
|
}
|
211
203
|
end
|
212
204
|
|
data/opal/corelib/struct.rb
CHANGED
data/opal/corelib/time.rb
CHANGED
@@ -391,7 +391,7 @@ class Time < `Date`
|
|
391
391
|
result = string.match(/[A-Z]{3,4}/)[0];
|
392
392
|
}
|
393
393
|
else {
|
394
|
-
result = string.match(/\(
|
394
|
+
result = string.match(/\((.+)\)(?:\s|$)/)[1]
|
395
395
|
}
|
396
396
|
|
397
397
|
if (result == "GMT" && /(GMT\W*\d{4})/.test(string)) {
|
data/stdlib/buffer/array.rb
CHANGED
data/stdlib/date.rb
CHANGED
@@ -42,24 +42,26 @@ class Date
|
|
42
42
|
|
43
43
|
def <=> (other)
|
44
44
|
case other
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
45
|
+
when Infinity;
|
46
|
+
return d <=> other.d
|
47
|
+
when Numeric;
|
48
|
+
return d
|
49
|
+
else
|
50
|
+
begin
|
51
|
+
l, r = other.coerce(self)
|
52
|
+
return l <=> r
|
53
|
+
rescue NoMethodError
|
54
|
+
end
|
53
55
|
end
|
54
56
|
nil
|
55
57
|
end
|
56
58
|
|
57
59
|
def coerce(other)
|
58
60
|
case other
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
61
|
+
when Numeric
|
62
|
+
return -d, d
|
63
|
+
else
|
64
|
+
super
|
63
65
|
end
|
64
66
|
end
|
65
67
|
|
@@ -596,6 +598,38 @@ class Date
|
|
596
598
|
wday == 2
|
597
599
|
end
|
598
600
|
|
601
|
+
def step(limit, step = 1, &block)
|
602
|
+
steps_count = (limit - self).to_i
|
603
|
+
|
604
|
+
if (steps_count * step) < 0
|
605
|
+
steps = []
|
606
|
+
else
|
607
|
+
if steps_count < 0
|
608
|
+
steps = (0..-steps_count).step(step.abs).map { |i| -i } .reverse
|
609
|
+
else
|
610
|
+
steps = (0..steps_count).step(step.abs)
|
611
|
+
end
|
612
|
+
end
|
613
|
+
|
614
|
+
result = steps.map { |i| self + i }
|
615
|
+
|
616
|
+
|
617
|
+
if block_given?
|
618
|
+
result.each {|i| yield(i)}
|
619
|
+
self
|
620
|
+
else
|
621
|
+
result
|
622
|
+
end
|
623
|
+
end
|
624
|
+
|
625
|
+
def upto(max, &block)
|
626
|
+
step(max, 1, &block)
|
627
|
+
end
|
628
|
+
|
629
|
+
def downto(min, &block)
|
630
|
+
step(min, -1, &block)
|
631
|
+
end
|
632
|
+
|
599
633
|
def wday
|
600
634
|
`#@date.getDay()`
|
601
635
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
%x{
|
2
|
+
Opal.exit = function(code) {
|
3
|
+
// You can't exit from the browser.
|
4
|
+
// The first call to Opal.exit should save an exit code.
|
5
|
+
// All next invocations must be ignored.
|
6
|
+
|
7
|
+
if (typeof(window.OPAL_EXIT_CODE) === "undefined") {
|
8
|
+
window.OPAL_EXIT_CODE = code;
|
9
|
+
}
|
10
|
+
}
|
11
|
+
}
|
data/stdlib/nodejs/file.rb
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
%x{
|
2
|
-
var warnings = {}
|
2
|
+
var warnings = {}, errno_code, errno_codes = [
|
3
|
+
'EACCES',
|
4
|
+
'EISDIR',
|
5
|
+
'EMFILE',
|
6
|
+
'ENOENT',
|
7
|
+
'EPERM'
|
8
|
+
];
|
9
|
+
|
3
10
|
function handle_unsupported_feature(message) {
|
4
11
|
switch (Opal.config.unsupported_features_severity) {
|
5
12
|
case 'error':
|
@@ -23,16 +30,20 @@
|
|
23
30
|
try {
|
24
31
|
return action();
|
25
32
|
} catch (error) {
|
26
|
-
if (error.code
|
27
|
-
|
28
|
-
|
29
|
-
error.code === 'ENOENT' ||
|
30
|
-
error.code === 'EPERM') {
|
31
|
-
throw Opal.IOError.$new(error.message)
|
33
|
+
if (errno_codes.indexOf(error.code) >= 0) {
|
34
|
+
var error_class = #{Errno.const_get(`error.code`)}
|
35
|
+
throw #{`error_class`.new(`error.message`)};
|
32
36
|
}
|
33
37
|
throw error;
|
34
38
|
}
|
35
39
|
}
|
40
|
+
|
41
|
+
for(var i = 0, ii = errno_codes.length; i < ii; i++) {
|
42
|
+
errno_code = errno_codes[i];
|
43
|
+
if (!#{Errno.const_defined?(`errno_code`)}) {
|
44
|
+
#{Errno.const_set(`errno_code`, Class.new(SystemCallError))}
|
45
|
+
}
|
46
|
+
}
|
36
47
|
}
|
37
48
|
|
38
49
|
class File < IO
|
@@ -82,12 +93,26 @@ class File < IO
|
|
82
93
|
|
83
94
|
def self.directory? path
|
84
95
|
return false unless exist? path
|
85
|
-
`
|
96
|
+
result = `executeIOAction(function(){return !!__fs__.lstatSync(path).isDirectory()})`
|
97
|
+
unless result
|
98
|
+
realpath = realpath(path)
|
99
|
+
if realpath != path
|
100
|
+
result = `executeIOAction(function(){return !!__fs__.lstatSync(realpath).isDirectory()})`
|
101
|
+
end
|
102
|
+
end
|
103
|
+
result
|
86
104
|
end
|
87
105
|
|
88
106
|
def self.file? path
|
89
107
|
return false unless exist? path
|
90
|
-
`
|
108
|
+
result = `executeIOAction(function(){return !!__fs__.lstatSync(path).isFile()})`
|
109
|
+
unless result
|
110
|
+
realpath = realpath(path)
|
111
|
+
if realpath != path
|
112
|
+
result = `executeIOAction(function(){return !!__fs__.lstatSync(realpath).isFile()})`
|
113
|
+
end
|
114
|
+
end
|
115
|
+
result
|
91
116
|
end
|
92
117
|
|
93
118
|
def self.readable? path
|
@@ -106,8 +131,8 @@ class File < IO
|
|
106
131
|
`return executeIOAction(function(){return __fs__.lstatSync(path).size})`
|
107
132
|
end
|
108
133
|
|
109
|
-
def self.open
|
110
|
-
file = new(path,
|
134
|
+
def self.open(path, mode = 'r')
|
135
|
+
file = new(path, mode)
|
111
136
|
if block_given?
|
112
137
|
begin
|
113
138
|
yield(file)
|
data/stdlib/nodejs/io.rb
CHANGED
data/stdlib/nodejs/stacktrace.rb
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
(function () {
|
34
34
|
|
35
35
|
if (!Error.captureStackTrace) {
|
36
|
-
|
36
|
+
return;
|
37
37
|
}
|
38
38
|
|
39
39
|
var ObjectToString = Object.prototype.toString;
|
@@ -42,121 +42,137 @@
|
|
42
42
|
|
43
43
|
// https://github.com/v8/v8/blob/cab94bbe3d532d85705950ed049a294050fcb4c9/src/messages.js#L1112-L1124 [converted to JS]
|
44
44
|
function GetTypeName(receiver, requireConstructor) {
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
45
|
+
if (receiver == null) return null;
|
46
|
+
var constructor = receiver.constructor;
|
47
|
+
if (!constructor) {
|
48
|
+
return requireConstructor ? null : ObjectToString.call(receiver);
|
49
|
+
}
|
50
|
+
var constructorName = constructor.name;
|
51
|
+
if (!constructorName) {
|
52
|
+
return requireConstructor ? null : ObjectToString.call(receiver);
|
53
|
+
}
|
54
|
+
return constructorName;
|
54
55
|
}
|
55
56
|
|
56
57
|
// https://github.com/v8/v8/blob/cab94bbe3d532d85705950ed049a294050fcb4c9/src/messages.js#L917-L981 [converted & modified]
|
57
58
|
function CallSiteToString() {
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
59
|
+
var fileName;
|
60
|
+
var fileLocation = "";
|
61
|
+
if (this.isNative()) {
|
62
|
+
fileLocation = "native";
|
63
|
+
} else {
|
64
|
+
fileName = this.getScriptNameOrSourceURL();
|
65
|
+
if (!fileName && this.isEval()) {
|
66
|
+
fileLocation = this.getEvalOrigin();
|
67
|
+
fileLocation += ", "; // Expecting source position to follow.
|
68
|
+
}
|
68
69
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
70
|
+
if (fileName) {
|
71
|
+
fileLocation += fileName;
|
72
|
+
} else {
|
73
|
+
// Source code does not originate from a file and is not native, but we
|
74
|
+
// can still get the source position inside the source string, e.g. in
|
75
|
+
// an eval string.
|
76
|
+
fileLocation += "<anonymous>";
|
77
|
+
}
|
78
|
+
var lineNumber = this.getLineNumber();
|
79
|
+
if (lineNumber !== null) {
|
80
|
+
fileLocation += ":" + lineNumber;
|
81
|
+
var columnNumber = this.getColumnNumber();
|
82
|
+
if (columnNumber) {
|
83
|
+
fileLocation += ":" + columnNumber;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
}
|
86
87
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
88
|
+
var line = "";
|
89
|
+
var func = this.getFunction();
|
90
|
+
var customName = func.displayName;
|
91
|
+
if (NODE && customName) {
|
92
|
+
if (customName && func.$$owner) {
|
93
|
+
var customNameOwner;
|
94
|
+
customNameOwner = (func.$$owner.displayName || func.$$owner.$$name);
|
95
|
+
customName = (func.$$owner.singleton_of ? '.' : '#') + customName;
|
96
|
+
}
|
97
|
+
customName = customNameOwner + customName;
|
98
|
+
}
|
99
|
+
var functionName = customName || this.getFunctionName();
|
100
|
+
var addSuffix = true;
|
101
|
+
var isConstructor = this.isConstructor();
|
102
|
+
var isMethodCall = !(this.isToplevel() || isConstructor);
|
103
|
+
if (isMethodCall) {
|
104
|
+
var typeName = GetTypeName(this.receiver, true);
|
105
|
+
var methodName = this.getMethodName();
|
106
|
+
if (functionName) {
|
107
|
+
if (!customName && typeName && functionName.indexOf(typeName) !== 0) {
|
108
|
+
line += typeName + ".";
|
109
|
+
}
|
110
|
+
line += functionName;
|
111
|
+
if (methodName && methodName !== functionName) {//} && functionName.indexOf("." + methodName) !== functionName.length - methodName.length - 1) {
|
112
|
+
line += " [as " + methodName + "]";
|
113
|
+
}
|
114
|
+
} else {
|
115
|
+
line += typeName + "." + (methodName || "<anonymous>");
|
116
|
+
}
|
117
|
+
} else if (isConstructor) {
|
118
|
+
line += "new " + (functionName || "<anonymous>");
|
119
|
+
} else if (functionName) {
|
120
|
+
if (func.$$s) {
|
121
|
+
if (func.$$s.displayName || func.$$s.$$name) {
|
122
|
+
line += 'block in ' + (func.$$s.displayName || func.$$s.$$name) + ' [as ' + functionName + ']';
|
123
|
+
} else if (func.$$s.$$class && func.$$s.$$class.$$name) {
|
124
|
+
line += 'block in #<' + func.$$s.$$class.$$name + ' $$id: ' + Opal.id(func.$$s) + '> [as ' + functionName + ']';
|
125
|
+
} else {
|
126
|
+
line += functionName;
|
127
|
+
}
|
128
|
+
} else {
|
129
|
+
line += functionName;
|
130
|
+
}
|
131
|
+
} else {
|
132
|
+
line += fileLocation;
|
133
|
+
addSuffix = false;
|
134
|
+
}
|
135
|
+
if (addSuffix) {
|
136
|
+
line += " (" + fileLocation + ")";
|
137
|
+
}
|
138
|
+
return line;
|
123
139
|
}
|
124
140
|
|
125
141
|
var ErrorToString = Error.prototype.toString;
|
126
142
|
|
127
143
|
// https://github.com/v8/v8/blob/cab94bbe3d532d85705950ed049a294050fcb4c9/src/messages.js#L1042-L1052 [converted]
|
128
144
|
function FormatErrorString(error) {
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
145
|
+
try {
|
146
|
+
return ErrorToString.call(error);
|
147
|
+
} catch (e) {
|
148
|
+
try {
|
149
|
+
return "<error: " + e + ">";
|
150
|
+
} catch (ee) {
|
151
|
+
return "<error>";
|
152
|
+
}
|
153
|
+
}
|
138
154
|
}
|
139
155
|
|
140
156
|
// https://github.com/v8/v8/blob/cab94bbe3d532d85705950ed049a294050fcb4c9/src/messages.js#L1091-L1108 [logic duplicated]
|
141
157
|
Error.prepareStackTrace = function (error, frames) {
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
158
|
+
var lines = [];
|
159
|
+
lines.push(FormatErrorString(error));
|
160
|
+
for (var i = 0; i < frames.length; i++) {
|
161
|
+
var frame = frames[i];
|
162
|
+
var line;
|
163
|
+
try {
|
164
|
+
line = CallSiteToString.call(frame);
|
165
|
+
} catch (e) {
|
166
|
+
try {
|
167
|
+
line = "<error: " + e + ">";
|
168
|
+
} catch (ee) {
|
169
|
+
// Any code that reaches this point is seriously nasty!
|
170
|
+
line = "<error>";
|
171
|
+
}
|
172
|
+
}
|
173
|
+
lines.push(" at " + line);
|
174
|
+
}
|
175
|
+
return lines.join("\n");
|
160
176
|
};
|
161
177
|
|
162
178
|
})();
|