opal 0.11.4 → 1.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +42 -10
- data/.rubocop.yml +398 -0
- data/.rubocop_todo.yml +44 -0
- data/.travis.yml +28 -34
- data/CHANGELOG.md +363 -142
- data/CONTRIBUTING.md +3 -5
- data/Gemfile +17 -12
- data/Guardfile +0 -1
- data/HACKING.md +1 -35
- data/LICENSE +2 -2
- data/README.md +42 -13
- data/Rakefile +1 -4
- data/UNRELEASED.md +133 -0
- data/benchmark-ips/README.md +6 -0
- data/benchmark-ips/bm_block_vs_yield.rb +21 -0
- data/benchmark-ips/bm_js_symbols_vs_strings.rb +28 -0
- data/benchmark-ips/bm_while_true_vs_loop.rb +19 -0
- data/bin/console +14 -0
- data/bin/opal +0 -1
- data/bin/opal-benchmark-ips +8 -0
- data/bin/opal-mspec +9 -1
- data/bin/opal-repl +2 -1
- data/bin/rake +7 -0
- data/bin/setup +8 -0
- data/docs/compiled_ruby.md +89 -8
- data/docs/compiler.md +3 -20
- data/docs/jquery.md +44 -11
- data/docs/promises.md +1 -1
- data/docs/rails.md +16 -12
- data/docs/sinatra.md +15 -8
- data/docs/using_sprockets.md +16 -11
- data/examples/rack/config.ru +1 -0
- data/examples/sinatra/Gemfile +1 -0
- data/examples/sinatra/config.ru +2 -11
- data/exe/opal-repl +3 -11
- data/lib/opal.rb +1 -0
- data/lib/opal/ast/builder.rb +4 -1
- data/lib/opal/ast/node.rb +1 -0
- data/lib/opal/builder.rb +84 -63
- data/lib/opal/builder_processors.rb +41 -56
- data/lib/opal/cli.rb +33 -49
- data/lib/opal/cli_options.rb +27 -17
- data/lib/opal/cli_runners.rb +73 -16
- data/lib/opal/cli_runners/applescript.rb +4 -4
- data/lib/opal/cli_runners/chrome.rb +29 -17
- data/lib/opal/cli_runners/nashorn.rb +5 -4
- data/lib/opal/cli_runners/nodejs.rb +8 -6
- data/lib/opal/cli_runners/server.rb +12 -11
- data/lib/opal/compiler.rb +85 -103
- data/lib/opal/config.rb +3 -3
- data/lib/opal/deprecations.rb +2 -1
- data/lib/opal/eof_content.rb +2 -2
- data/lib/opal/erb.rb +8 -7
- data/lib/opal/errors.rb +72 -1
- data/lib/opal/fragment.rb +23 -3
- data/lib/opal/hike.rb +305 -0
- data/lib/opal/nodes.rb +5 -10
- data/lib/opal/nodes/arglist.rb +7 -6
- data/lib/opal/nodes/args.rb +36 -0
- data/lib/opal/nodes/args/arg.rb +22 -0
- data/lib/opal/nodes/args/arity_check.rb +151 -0
- data/lib/opal/nodes/args/ensure_kwargs_are_kwargs.rb +28 -0
- data/lib/opal/nodes/args/extract_block_arg.rb +34 -0
- data/lib/opal/nodes/args/extract_kwarg.rb +32 -0
- data/lib/opal/nodes/args/extract_kwargs.rb +28 -0
- data/lib/opal/nodes/args/extract_kwoptarg.rb +35 -0
- data/lib/opal/nodes/args/extract_kwrestarg.rb +35 -0
- data/lib/opal/nodes/args/extract_optarg.rb +35 -0
- data/lib/opal/nodes/args/extract_post_arg.rb +28 -0
- data/lib/opal/nodes/args/extract_post_optarg.rb +41 -0
- data/lib/opal/nodes/args/extract_restarg.rb +40 -0
- data/lib/opal/nodes/args/fake_arg.rb +26 -0
- data/lib/opal/nodes/args/initialize_iterarg.rb +28 -0
- data/lib/opal/nodes/args/initialize_shadowarg.rb +24 -0
- data/lib/opal/nodes/args/parameters.rb +63 -0
- data/lib/opal/nodes/args/prepare_post_args.rb +22 -0
- data/lib/opal/nodes/array.rb +9 -8
- data/lib/opal/nodes/base.rb +20 -11
- data/lib/opal/nodes/call.rb +24 -25
- data/lib/opal/nodes/call_special.rb +4 -3
- data/lib/opal/nodes/case.rb +24 -26
- data/lib/opal/nodes/class.rb +4 -5
- data/lib/opal/nodes/constants.rb +8 -7
- data/lib/opal/nodes/csend.rb +2 -3
- data/lib/opal/nodes/def.rb +28 -74
- data/lib/opal/nodes/defined.rb +36 -36
- data/lib/opal/nodes/definitions.rb +10 -7
- data/lib/opal/nodes/defs.rb +8 -16
- data/lib/opal/nodes/hash.rb +5 -4
- data/lib/opal/nodes/helpers.rb +8 -8
- data/lib/opal/nodes/if.rb +10 -8
- data/lib/opal/nodes/iter.rb +16 -103
- data/lib/opal/nodes/lambda.rb +18 -0
- data/lib/opal/nodes/literal.rb +29 -63
- data/lib/opal/nodes/logic.rb +25 -24
- data/lib/opal/nodes/masgn.rb +8 -6
- data/lib/opal/nodes/module.rb +4 -4
- data/lib/opal/nodes/node_with_args.rb +14 -208
- data/lib/opal/nodes/rescue.rb +32 -32
- data/lib/opal/nodes/runtime_helpers.rb +5 -4
- data/lib/opal/nodes/scope.rb +18 -29
- data/lib/opal/nodes/singleton_class.rb +3 -3
- data/lib/opal/nodes/super.rb +12 -18
- data/lib/opal/nodes/top.rb +10 -8
- data/lib/opal/nodes/variables.rb +6 -6
- data/lib/opal/nodes/while.rb +7 -6
- data/lib/opal/nodes/x_string.rb +139 -0
- data/lib/opal/nodes/yield.rb +10 -7
- data/lib/opal/parser.rb +9 -46
- data/lib/opal/parser/default_config.rb +50 -0
- data/lib/opal/parser/patch.rb +26 -0
- data/lib/opal/parser/source_buffer.rb +11 -0
- data/lib/opal/parser/with_c_lexer.rb +14 -0
- data/lib/opal/parser/with_ruby_lexer.rb +6 -0
- data/lib/opal/path_reader.rb +6 -5
- data/lib/opal/paths.rb +9 -6
- data/lib/opal/regexp_anchors.rb +6 -5
- data/lib/opal/rewriter.rb +7 -0
- data/lib/opal/rewriters/arguments.rb +58 -0
- data/lib/opal/rewriters/base.rb +32 -12
- data/lib/opal/rewriters/binary_operator_assignment.rb +20 -20
- data/lib/opal/rewriters/block_to_iter.rb +2 -1
- data/lib/opal/rewriters/break_finder.rb +2 -0
- data/lib/opal/rewriters/dot_js_syntax.rb +3 -2
- data/lib/opal/rewriters/dump_args.rb +28 -0
- data/lib/opal/rewriters/explicit_writer_return.rb +4 -3
- data/lib/opal/rewriters/for_rewriter.rb +12 -12
- data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +2 -1
- data/lib/opal/rewriters/inline_args.rb +220 -0
- data/lib/opal/rewriters/js_reserved_words.rb +21 -17
- data/lib/opal/rewriters/logical_operator_assignment.rb +24 -14
- data/lib/opal/rewriters/mlhs_args.rb +128 -0
- data/lib/opal/rewriters/opal_engine_check.rb +11 -6
- data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +3 -2
- data/lib/opal/server.rb +1 -0
- data/lib/opal/simple_server.rb +15 -23
- data/lib/opal/source_map.rb +7 -70
- data/lib/opal/source_map/file.rb +199 -0
- data/lib/opal/source_map/index.rb +83 -0
- data/lib/opal/source_map/map.rb +26 -0
- data/lib/opal/source_map/vlq.rb +98 -0
- data/lib/opal/util.rb +7 -5
- data/lib/opal/version.rb +2 -1
- data/lib/tilt/opal.rb +3 -3
- data/opal.gemspec +18 -9
- data/opal/corelib/array.rb +135 -117
- data/opal/corelib/array/pack.rb +446 -0
- data/opal/corelib/basic_object.rb +23 -9
- data/opal/corelib/boolean.rb +3 -3
- data/opal/corelib/class.rb +4 -10
- data/opal/corelib/comparable.rb +36 -23
- data/opal/corelib/complex.rb +108 -14
- data/opal/corelib/constants.rb +4 -4
- data/opal/corelib/enumerable.rb +132 -135
- data/opal/corelib/enumerator.rb +47 -50
- data/opal/corelib/error.rb +65 -8
- data/opal/corelib/file.rb +37 -32
- data/opal/corelib/hash.rb +90 -21
- data/opal/corelib/helpers.rb +7 -6
- data/opal/corelib/kernel.rb +53 -586
- data/opal/corelib/kernel/format.rb +544 -0
- data/opal/corelib/marshal.rb +1 -13
- data/opal/corelib/marshal/read_buffer.rb +20 -23
- data/opal/corelib/marshal/write_buffer.rb +23 -15
- data/opal/corelib/math.rb +12 -16
- data/opal/corelib/method.rb +5 -3
- data/opal/corelib/module.rb +80 -109
- data/opal/corelib/nil.rb +2 -2
- data/opal/corelib/number.rb +177 -43
- data/opal/corelib/numeric.rb +22 -16
- data/opal/corelib/pack_unpack/format_string_parser.rb +135 -0
- data/opal/corelib/proc.rb +3 -4
- data/opal/corelib/process.rb +1 -1
- data/opal/corelib/random.rb +24 -16
- data/opal/corelib/random/MersenneTwister.js +137 -0
- data/opal/corelib/random/math_random.js.rb +9 -0
- data/opal/corelib/random/mersenne_twister.js.rb +13 -0
- data/opal/corelib/random/seedrandom.js.rb +12 -0
- data/opal/corelib/range.rb +25 -26
- data/opal/corelib/rational.rb +57 -17
- data/opal/corelib/regexp.rb +39 -43
- data/opal/corelib/runtime.js +806 -683
- data/opal/corelib/string.rb +213 -112
- data/opal/corelib/string/encoding.rb +14 -17
- data/opal/corelib/string/unpack.rb +793 -0
- data/opal/corelib/struct.rb +40 -24
- data/opal/corelib/time.rb +14 -15
- data/opal/corelib/unsupported.rb +26 -4
- data/opal/opal.rb +2 -1
- data/opal/opal/full.rb +2 -0
- data/stdlib/base64.rb +1 -1
- data/stdlib/bigdecimal.rb +11 -13
- data/stdlib/buffer.rb +9 -8
- data/stdlib/buffer/array.rb +46 -48
- data/stdlib/buffer/view.rb +85 -47
- data/stdlib/console.rb +18 -18
- data/stdlib/date.rb +85 -66
- data/stdlib/delegate.rb +2 -2
- data/stdlib/e2mmap.rb +176 -0
- data/stdlib/encoding.rb +1 -1
- data/stdlib/erb.rb +1 -1
- data/stdlib/forwardable.rb +14 -14
- data/stdlib/json.rb +1 -2
- data/stdlib/logger.rb +112 -0
- data/stdlib/math.rb +1 -1
- data/stdlib/matrix.rb +2169 -0
- data/stdlib/matrix/eigenvalue_decomposition.rb +883 -0
- data/stdlib/matrix/lup_decomposition.rb +219 -0
- data/stdlib/nashorn/file.rb +7 -9
- data/stdlib/native.rb +69 -63
- data/stdlib/nodejs.rb +3 -0
- data/stdlib/nodejs/dir.rb +25 -4
- data/stdlib/nodejs/env.rb +40 -0
- data/stdlib/nodejs/file.rb +184 -34
- data/stdlib/nodejs/fileutils.rb +4 -4
- data/stdlib/nodejs/io.rb +4 -46
- data/stdlib/nodejs/irb.rb +27 -29
- data/stdlib/nodejs/kernel.rb +2 -11
- data/stdlib/nodejs/node_modules/balanced-match/.npmignore +5 -0
- data/stdlib/nodejs/node_modules/balanced-match/LICENSE.md +21 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/README.md +13 -2
- data/stdlib/nodejs/node_modules/balanced-match/index.js +59 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/package.json +46 -42
- data/stdlib/nodejs/node_modules/brace-expansion/LICENSE +21 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/README.md +9 -1
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/index.js +12 -2
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/package.json +48 -48
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/.travis.yml +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/README.markdown +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/example/map.js +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/index.js +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/package.json +47 -42
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/test/map.js +0 -0
- data/stdlib/nodejs/node_modules/fs.realpath/LICENSE +43 -0
- data/stdlib/nodejs/node_modules/fs.realpath/README.md +33 -0
- data/stdlib/nodejs/node_modules/fs.realpath/index.js +66 -0
- data/stdlib/nodejs/node_modules/fs.realpath/old.js +303 -0
- data/stdlib/nodejs/node_modules/fs.realpath/package.json +59 -0
- data/stdlib/nodejs/node_modules/glob/README.md +57 -46
- data/stdlib/nodejs/node_modules/glob/changelog.md +67 -0
- data/stdlib/nodejs/node_modules/glob/common.js +91 -28
- data/stdlib/nodejs/node_modules/glob/glob.js +196 -55
- data/stdlib/nodejs/node_modules/glob/package.json +55 -51
- data/stdlib/nodejs/node_modules/glob/sync.js +116 -39
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/README.md +0 -0
- data/stdlib/nodejs/node_modules/inflight/inflight.js +54 -0
- data/stdlib/nodejs/node_modules/inflight/package.json +58 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/README.md +0 -0
- data/stdlib/nodejs/node_modules/inherits/inherits.js +7 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/inherits_browser.js +0 -0
- data/stdlib/nodejs/node_modules/inherits/package.json +61 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → minimatch}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/README.md +2 -9
- data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/minimatch.js +284 -206
- data/stdlib/nodejs/node_modules/minimatch/package.json +63 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/once/node_modules/wrappy → once}/LICENSE +0 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/once → once}/README.md +28 -0
- data/stdlib/nodejs/node_modules/once/once.js +42 -0
- data/stdlib/nodejs/node_modules/once/package.json +67 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/index.js +20 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/license +21 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/package.json +75 -0
- data/stdlib/nodejs/node_modules/path-is-absolute/readme.md +59 -0
- data/stdlib/nodejs/node_modules/unxhr/LICENSE +22 -0
- data/stdlib/nodejs/node_modules/unxhr/README.md +41 -0
- data/stdlib/nodejs/node_modules/unxhr/lib/XMLHttpRequest.js +598 -0
- data/stdlib/nodejs/node_modules/unxhr/lib/browser.js +2 -0
- data/stdlib/nodejs/node_modules/unxhr/lib/request.js +63 -0
- data/stdlib/nodejs/node_modules/unxhr/package.json +75 -0
- data/stdlib/nodejs/node_modules/wrappy/LICENSE +15 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/README.md +0 -0
- data/stdlib/nodejs/node_modules/wrappy/package.json +59 -0
- data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/wrappy.js +0 -0
- data/stdlib/nodejs/open-uri.rb +26 -0
- data/stdlib/nodejs/package-lock.json +88 -0
- data/stdlib/nodejs/package.json +2 -1
- data/stdlib/nodejs/pathname.rb +20 -0
- data/stdlib/nodejs/require.rb +3 -3
- data/stdlib/nodejs/stacktrace.rb +1 -1
- data/stdlib/nodejs/yaml.rb +1 -1
- data/stdlib/opal-builder.rb +1 -0
- data/stdlib/opal-parser.rb +4 -1
- data/stdlib/opal-platform.rb +8 -10
- data/stdlib/opal-source-maps.rb +0 -1
- data/stdlib/open-uri.rb +349 -0
- data/stdlib/ostruct.rb +19 -17
- data/stdlib/pathname.rb +22 -22
- data/stdlib/pp.rb +5 -5
- data/stdlib/promise.rb +30 -26
- data/stdlib/rbconfig/sizeof.rb +50 -0
- data/stdlib/securerandom.rb +1 -1
- data/stdlib/set.rb +21 -23
- data/stdlib/singleton.rb +3 -4
- data/stdlib/stringio.rb +33 -0
- data/stdlib/strscan.rb +55 -55
- data/stdlib/template.rb +1 -2
- data/stdlib/thread.rb +6 -7
- data/tasks/benchmarking.rake +1 -1
- data/tasks/building.rake +4 -12
- data/tasks/linting.rake +17 -2
- data/tasks/releasing.rake +84 -0
- data/tasks/testing.rake +57 -15
- data/tasks/testing/mspec_special_calls.rb +23 -4
- data/vendored-minitest/minitest.rb +1 -1
- metadata +169 -168
- data/bin/opal-build +0 -3
- data/exe/opal-mspec +0 -10
- data/lib/opal/nodes/args/initialize_kwargs.rb +0 -29
- data/lib/opal/nodes/args/kwarg.rb +0 -31
- data/lib/opal/nodes/args/kwoptarg.rb +0 -34
- data/lib/opal/nodes/args/kwrestarg.rb +0 -39
- data/lib/opal/nodes/args/mlhsarg.rb +0 -78
- data/lib/opal/nodes/args/normarg.rb +0 -29
- data/lib/opal/nodes/args/optarg.rb +0 -25
- data/lib/opal/nodes/args/post_args.rb +0 -201
- data/lib/opal/nodes/args/post_kwargs.rb +0 -32
- data/lib/opal/nodes/args/restarg.rb +0 -38
- data/lib/opal/nodes/inline_args.rb +0 -60
- data/opal/corelib/string/inheritance.rb +0 -123
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +0 -17
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +0 -44
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +0 -52
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +0 -51
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +0 -61
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +0 -97
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +0 -1
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +0 -51
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +0 -25
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +0 -1
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +0 -4
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +0 -23
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +0 -15
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +0 -1181
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +0 -2
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +0 -3
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +0 -8
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +0 -2
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +0 -4
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +0 -6
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +0 -5
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +0 -38
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +0 -56
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +0 -32
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +0 -1075
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +0 -182
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +0 -9
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +0 -10
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +0 -24
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +0 -15
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +0 -16
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +0 -10
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +0 -13
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +0 -7
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +0 -50
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +0 -60
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +0 -399
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +0 -45
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +0 -274
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +0 -8
- data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +0 -27
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +0 -36
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +0 -52
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +0 -51
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +0 -33
- data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +0 -21
- data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +0 -60
- data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +0 -23
- data/stdlib/nodejs/rubygems.rb +0 -68
- data/stdlib/source_map.rb +0 -5
- data/stdlib/source_map/map.rb +0 -220
- data/stdlib/source_map/mapping.rb +0 -26
- data/stdlib/source_map/offset.rb +0 -88
- data/stdlib/source_map/version.rb +0 -3
- data/stdlib/source_map/vlq.rb +0 -99
- data/stdlib/sourcemap.rb +0 -1
data/opal/corelib/hash.rb
CHANGED
@@ -12,7 +12,7 @@ class Hash
|
|
12
12
|
include Enumerable
|
13
13
|
|
14
14
|
# Mark all hash instances as valid hashes (used to check keyword args, etc)
|
15
|
-
`
|
15
|
+
`self.$$prototype.$$is_hash = true`
|
16
16
|
|
17
17
|
def self.[](*argv)
|
18
18
|
%x{
|
@@ -65,7 +65,7 @@ class Hash
|
|
65
65
|
|
66
66
|
def self.allocate
|
67
67
|
%x{
|
68
|
-
var hash = new self.$$
|
68
|
+
var hash = new self.$$constructor();
|
69
69
|
|
70
70
|
Opal.hash_init(hash);
|
71
71
|
|
@@ -87,8 +87,9 @@ class Hash
|
|
87
87
|
}
|
88
88
|
self.$$none = (defaults === undefined ? nil : defaults);
|
89
89
|
self.$$proc = block;
|
90
|
+
|
91
|
+
return self;
|
90
92
|
}
|
91
|
-
self
|
92
93
|
end
|
93
94
|
|
94
95
|
def ==(other)
|
@@ -220,7 +221,7 @@ class Hash
|
|
220
221
|
|
221
222
|
def clone
|
222
223
|
%x{
|
223
|
-
var hash = new self.$$class
|
224
|
+
var hash = new self.$$class();
|
224
225
|
|
225
226
|
Opal.hash_init(hash);
|
226
227
|
Opal.hash_clone(self, hash);
|
@@ -365,7 +366,7 @@ class Hash
|
|
365
366
|
}
|
366
367
|
|
367
368
|
if (block !== nil) {
|
368
|
-
return #{
|
369
|
+
return #{yield key};
|
369
370
|
}
|
370
371
|
|
371
372
|
return nil;
|
@@ -373,7 +374,7 @@ class Hash
|
|
373
374
|
end
|
374
375
|
|
375
376
|
def delete_if(&block)
|
376
|
-
return enum_for(:delete_if){
|
377
|
+
return enum_for(:delete_if) { size } unless block
|
377
378
|
|
378
379
|
%x{
|
379
380
|
for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) {
|
@@ -419,7 +420,7 @@ class Hash
|
|
419
420
|
end
|
420
421
|
|
421
422
|
def each(&block)
|
422
|
-
return enum_for(:each){
|
423
|
+
return enum_for(:each) { size } unless block
|
423
424
|
|
424
425
|
%x{
|
425
426
|
for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {
|
@@ -440,7 +441,7 @@ class Hash
|
|
440
441
|
end
|
441
442
|
|
442
443
|
def each_key(&block)
|
443
|
-
return enum_for(:each_key){
|
444
|
+
return enum_for(:each_key) { size } unless block
|
444
445
|
|
445
446
|
%x{
|
446
447
|
for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) {
|
@@ -456,7 +457,7 @@ class Hash
|
|
456
457
|
alias each_pair each
|
457
458
|
|
458
459
|
def each_value(&block)
|
459
|
-
return enum_for(:each_value){
|
460
|
+
return enum_for(:each_value) { size } unless block
|
460
461
|
|
461
462
|
%x{
|
462
463
|
for (var i = 0, keys = self.$$keys, length = keys.length, key; i < length; i++) {
|
@@ -492,7 +493,7 @@ class Hash
|
|
492
493
|
}
|
493
494
|
}
|
494
495
|
|
495
|
-
raise KeyError
|
496
|
+
raise KeyError.new("key not found: #{key.inspect}", key: key, receiver: self)
|
496
497
|
end
|
497
498
|
|
498
499
|
def fetch_values(*keys, &block)
|
@@ -642,7 +643,7 @@ class Hash
|
|
642
643
|
|
643
644
|
alias indices indexes
|
644
645
|
|
645
|
-
`var inspect_ids
|
646
|
+
`var inspect_ids`
|
646
647
|
|
647
648
|
def inspect
|
648
649
|
%x{
|
@@ -706,7 +707,7 @@ class Hash
|
|
706
707
|
end
|
707
708
|
|
708
709
|
def keep_if(&block)
|
709
|
-
return enum_for(:keep_if){
|
710
|
+
return enum_for(:keep_if) { size } unless block
|
710
711
|
|
711
712
|
%x{
|
712
713
|
for (var i = 0, keys = self.$$keys, length = keys.length, key, value, obj; i < length; i++) {
|
@@ -843,7 +844,7 @@ class Hash
|
|
843
844
|
end
|
844
845
|
|
845
846
|
def reject(&block)
|
846
|
-
return enum_for(:reject){
|
847
|
+
return enum_for(:reject) { size } unless block
|
847
848
|
|
848
849
|
%x{
|
849
850
|
var hash = Opal.hash();
|
@@ -870,7 +871,7 @@ class Hash
|
|
870
871
|
end
|
871
872
|
|
872
873
|
def reject!(&block)
|
873
|
-
return enum_for(:reject!){
|
874
|
+
return enum_for(:reject!) { size } unless block
|
874
875
|
|
875
876
|
%x{
|
876
877
|
var changes_were_made = false;
|
@@ -930,7 +931,7 @@ class Hash
|
|
930
931
|
end
|
931
932
|
|
932
933
|
def select(&block)
|
933
|
-
return enum_for(:select){
|
934
|
+
return enum_for(:select) { size } unless block
|
934
935
|
|
935
936
|
%x{
|
936
937
|
var hash = Opal.hash();
|
@@ -957,7 +958,7 @@ class Hash
|
|
957
958
|
end
|
958
959
|
|
959
960
|
def select!(&block)
|
960
|
-
return enum_for(:select!){
|
961
|
+
return enum_for(:select!) { size } unless block
|
961
962
|
|
962
963
|
%x{
|
963
964
|
var result = nil;
|
@@ -1006,7 +1007,23 @@ class Hash
|
|
1006
1007
|
|
1007
1008
|
alias size length
|
1008
1009
|
|
1009
|
-
|
1010
|
+
def slice(*keys)
|
1011
|
+
%x{
|
1012
|
+
var result = Opal.hash();
|
1013
|
+
|
1014
|
+
for (var i = 0, length = keys.length; i < length; i++) {
|
1015
|
+
var key = keys[i], value = Opal.hash_get(self, key);
|
1016
|
+
|
1017
|
+
if (value !== undefined) {
|
1018
|
+
Opal.hash_put(result, key, value);
|
1019
|
+
}
|
1020
|
+
}
|
1021
|
+
|
1022
|
+
return result;
|
1023
|
+
}
|
1024
|
+
end
|
1025
|
+
|
1026
|
+
alias store []=
|
1010
1027
|
|
1011
1028
|
def to_a
|
1012
1029
|
%x{
|
@@ -1035,7 +1052,7 @@ class Hash
|
|
1035
1052
|
return self;
|
1036
1053
|
}
|
1037
1054
|
|
1038
|
-
var hash = new Opal.Hash
|
1055
|
+
var hash = new Opal.Hash();
|
1039
1056
|
|
1040
1057
|
Opal.hash_init(hash);
|
1041
1058
|
Opal.hash_clone(self, hash);
|
@@ -1052,7 +1069,7 @@ class Hash
|
|
1052
1069
|
proc do |key = undefined|
|
1053
1070
|
%x{
|
1054
1071
|
if (key == null) {
|
1055
|
-
#{raise ArgumentError,
|
1072
|
+
#{raise ArgumentError, 'no key given'}
|
1056
1073
|
}
|
1057
1074
|
}
|
1058
1075
|
|
@@ -1062,8 +1079,60 @@ class Hash
|
|
1062
1079
|
|
1063
1080
|
alias to_s inspect
|
1064
1081
|
|
1082
|
+
def transform_keys(&block)
|
1083
|
+
return enum_for(:transform_keys) { size } unless block
|
1084
|
+
|
1085
|
+
%x{
|
1086
|
+
var result = Opal.hash();
|
1087
|
+
|
1088
|
+
for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {
|
1089
|
+
key = keys[i];
|
1090
|
+
|
1091
|
+
if (key.$$is_string) {
|
1092
|
+
value = self.$$smap[key];
|
1093
|
+
} else {
|
1094
|
+
value = key.value;
|
1095
|
+
key = key.key;
|
1096
|
+
}
|
1097
|
+
|
1098
|
+
key = Opal.yield1(block, key);
|
1099
|
+
|
1100
|
+
Opal.hash_put(result, key, value);
|
1101
|
+
}
|
1102
|
+
|
1103
|
+
return result;
|
1104
|
+
}
|
1105
|
+
end
|
1106
|
+
|
1107
|
+
def transform_keys!(&block)
|
1108
|
+
return enum_for(:transform_keys!) { size } unless block
|
1109
|
+
|
1110
|
+
%x{
|
1111
|
+
var keys = Opal.slice.call(self.$$keys),
|
1112
|
+
i, length = keys.length, key, value, new_key;
|
1113
|
+
|
1114
|
+
for (i = 0; i < length; i++) {
|
1115
|
+
key = keys[i];
|
1116
|
+
|
1117
|
+
if (key.$$is_string) {
|
1118
|
+
value = self.$$smap[key];
|
1119
|
+
} else {
|
1120
|
+
value = key.value;
|
1121
|
+
key = key.key;
|
1122
|
+
}
|
1123
|
+
|
1124
|
+
new_key = Opal.yield1(block, key);
|
1125
|
+
|
1126
|
+
Opal.hash_delete(self, key);
|
1127
|
+
Opal.hash_put(self, new_key, value);
|
1128
|
+
}
|
1129
|
+
|
1130
|
+
return self;
|
1131
|
+
}
|
1132
|
+
end
|
1133
|
+
|
1065
1134
|
def transform_values(&block)
|
1066
|
-
return enum_for(:transform_values){
|
1135
|
+
return enum_for(:transform_values) { size } unless block
|
1067
1136
|
|
1068
1137
|
%x{
|
1069
1138
|
var result = Opal.hash();
|
@@ -1088,7 +1157,7 @@ class Hash
|
|
1088
1157
|
end
|
1089
1158
|
|
1090
1159
|
def transform_values!(&block)
|
1091
|
-
return enum_for(:transform_values!){
|
1160
|
+
return enum_for(:transform_values!) { size } unless block
|
1092
1161
|
|
1093
1162
|
%x{
|
1094
1163
|
for (var i = 0, keys = self.$$keys, length = keys.length, key, value; i < length; i++) {
|
data/opal/corelib/helpers.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module Opal
|
2
|
-
def self.bridge(
|
3
|
-
`Opal.bridge(
|
2
|
+
def self.bridge(constructor, klass)
|
3
|
+
`Opal.bridge(constructor, klass)`
|
4
4
|
end
|
5
5
|
|
6
6
|
def self.type_error(object, type, method = nil, coerced = nil)
|
7
7
|
if method && coerced
|
8
|
-
TypeError.new "can't convert #{object.class} into #{type} (#{object.class}##{method} gives #{coerced.class}"
|
8
|
+
TypeError.new "can't convert #{object.class} into #{type} (#{object.class}##{method} gives #{coerced.class})"
|
9
9
|
else
|
10
10
|
TypeError.new "no implicit conversion of #{object.class} into #{type}"
|
11
11
|
end
|
@@ -80,14 +80,14 @@ module Opal
|
|
80
80
|
}
|
81
81
|
end
|
82
82
|
|
83
|
-
def self.respond_to?(obj, method)
|
83
|
+
def self.respond_to?(obj, method, include_all = false)
|
84
84
|
%x{
|
85
85
|
if (obj == null || !obj.$$class) {
|
86
86
|
return false;
|
87
87
|
}
|
88
88
|
}
|
89
89
|
|
90
|
-
obj.respond_to?
|
90
|
+
obj.respond_to?(method, include_all)
|
91
91
|
end
|
92
92
|
|
93
93
|
def self.inspect_obj(obj)
|
@@ -155,7 +155,8 @@ module Opal
|
|
155
155
|
var method_name, method;
|
156
156
|
for (var i = method_names.length - 1; i >= 0; i--) {
|
157
157
|
method_name = method_names[i];
|
158
|
-
method = owner_class.$$
|
158
|
+
method = owner_class.$$prototype['$'+method_name];
|
159
|
+
|
159
160
|
if (method && !method.$$stub) {
|
160
161
|
method.$$pristine = true;
|
161
162
|
}
|
data/opal/corelib/kernel.rb
CHANGED
@@ -8,11 +8,11 @@ module Kernel
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def !~(obj)
|
11
|
-
|
11
|
+
!(self =~ obj)
|
12
12
|
end
|
13
13
|
|
14
14
|
def ===(other)
|
15
|
-
|
15
|
+
object_id == other.object_id || self == other
|
16
16
|
end
|
17
17
|
|
18
18
|
def <=>(other)
|
@@ -44,26 +44,23 @@ module Kernel
|
|
44
44
|
|
45
45
|
def methods(all = true)
|
46
46
|
%x{
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
if (all == false || all === nil) {
|
52
|
-
if (!Opal.hasOwnProperty.call(self, key)) {
|
53
|
-
continue;
|
54
|
-
}
|
55
|
-
}
|
56
|
-
if (self[key].$$stub === undefined) {
|
57
|
-
methods.push(key.substr(1));
|
58
|
-
}
|
59
|
-
}
|
47
|
+
if (#{Opal.truthy?(all)}) {
|
48
|
+
return Opal.methods(self);
|
49
|
+
} else {
|
50
|
+
return Opal.own_methods(self);
|
60
51
|
}
|
61
|
-
|
62
|
-
return methods;
|
63
52
|
}
|
64
53
|
end
|
65
54
|
|
66
|
-
|
55
|
+
def public_methods(all = true)
|
56
|
+
%x{
|
57
|
+
if (#{Opal.truthy?(all)}) {
|
58
|
+
return Opal.methods(self);
|
59
|
+
} else {
|
60
|
+
return Opal.receiver_methods(self);
|
61
|
+
}
|
62
|
+
}
|
63
|
+
end
|
67
64
|
|
68
65
|
def Array(object)
|
69
66
|
%x{
|
@@ -116,20 +113,29 @@ module Kernel
|
|
116
113
|
|
117
114
|
def copy_singleton_methods(other)
|
118
115
|
%x{
|
119
|
-
var name;
|
116
|
+
var i, name, names, length;
|
120
117
|
|
121
118
|
if (other.hasOwnProperty('$$meta')) {
|
122
|
-
var
|
123
|
-
var
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
119
|
+
var other_singleton_class = Opal.get_singleton_class(other);
|
120
|
+
var self_singleton_class = Opal.get_singleton_class(self);
|
121
|
+
names = Object.getOwnPropertyNames(other_singleton_class.$$prototype);
|
122
|
+
|
123
|
+
for (i = 0, length = names.length; i < length; i++) {
|
124
|
+
name = names[i];
|
125
|
+
if (Opal.is_method(name)) {
|
126
|
+
self_singleton_class.$$prototype[name] = other_singleton_class.$$prototype[name];
|
128
127
|
}
|
129
128
|
}
|
129
|
+
|
130
|
+
self_singleton_class.$$const = Object.assign({}, other_singleton_class.$$const);
|
131
|
+
Object.setPrototypeOf(
|
132
|
+
self_singleton_class.$$prototype,
|
133
|
+
Object.getPrototypeOf(other_singleton_class.$$prototype)
|
134
|
+
);
|
130
135
|
}
|
131
136
|
|
132
|
-
for (
|
137
|
+
for (i = 0, names = Object.getOwnPropertyNames(other), length = names.length; i < length; i++) {
|
138
|
+
name = names[i];
|
133
139
|
if (name.charAt(0) === '$' && name.charAt(1) !== '$' && other.hasOwnProperty(name)) {
|
134
140
|
self[name] = other[name];
|
135
141
|
}
|
@@ -181,7 +187,7 @@ module Kernel
|
|
181
187
|
def exit(status = true)
|
182
188
|
$__at_exit__ ||= []
|
183
189
|
|
184
|
-
|
190
|
+
until $__at_exit__.empty?
|
185
191
|
block = $__at_exit__.pop
|
186
192
|
block.call
|
187
193
|
end
|
@@ -210,6 +216,7 @@ module Kernel
|
|
210
216
|
}
|
211
217
|
|
212
218
|
#{`mod`.append_features `singleton`};
|
219
|
+
#{`mod`.extend_object self};
|
213
220
|
#{`mod`.extended self};
|
214
221
|
}
|
215
222
|
}
|
@@ -217,547 +224,6 @@ module Kernel
|
|
217
224
|
self
|
218
225
|
end
|
219
226
|
|
220
|
-
def format(format_string, *args)
|
221
|
-
if args.length == 1 && args[0].respond_to?(:to_ary)
|
222
|
-
ary = Opal.coerce_to?(args[0], Array, :to_ary)
|
223
|
-
args = ary.to_a unless ary.nil?
|
224
|
-
end
|
225
|
-
|
226
|
-
%x{
|
227
|
-
var result = '',
|
228
|
-
//used for slicing:
|
229
|
-
begin_slice = 0,
|
230
|
-
end_slice,
|
231
|
-
//used for iterating over the format string:
|
232
|
-
i,
|
233
|
-
len = format_string.length,
|
234
|
-
//used for processing field values:
|
235
|
-
arg,
|
236
|
-
str,
|
237
|
-
//used for processing %g and %G fields:
|
238
|
-
exponent,
|
239
|
-
//used for keeping track of width and precision:
|
240
|
-
width,
|
241
|
-
precision,
|
242
|
-
//used for holding temporary values:
|
243
|
-
tmp_num,
|
244
|
-
//used for processing %{} and %<> fileds:
|
245
|
-
hash_parameter_key,
|
246
|
-
closing_brace_char,
|
247
|
-
//used for processing %b, %B, %o, %x, and %X fields:
|
248
|
-
base_number,
|
249
|
-
base_prefix,
|
250
|
-
base_neg_zero_regex,
|
251
|
-
base_neg_zero_digit,
|
252
|
-
//used for processing arguments:
|
253
|
-
next_arg,
|
254
|
-
seq_arg_num = 1,
|
255
|
-
pos_arg_num = 0,
|
256
|
-
//used for keeping track of flags:
|
257
|
-
flags,
|
258
|
-
FNONE = 0,
|
259
|
-
FSHARP = 1,
|
260
|
-
FMINUS = 2,
|
261
|
-
FPLUS = 4,
|
262
|
-
FZERO = 8,
|
263
|
-
FSPACE = 16,
|
264
|
-
FWIDTH = 32,
|
265
|
-
FPREC = 64,
|
266
|
-
FPREC0 = 128;
|
267
|
-
|
268
|
-
function CHECK_FOR_FLAGS() {
|
269
|
-
if (flags&FWIDTH) { #{raise ArgumentError, 'flag after width'} }
|
270
|
-
if (flags&FPREC0) { #{raise ArgumentError, 'flag after precision'} }
|
271
|
-
}
|
272
|
-
|
273
|
-
function CHECK_FOR_WIDTH() {
|
274
|
-
if (flags&FWIDTH) { #{raise ArgumentError, 'width given twice'} }
|
275
|
-
if (flags&FPREC0) { #{raise ArgumentError, 'width after precision'} }
|
276
|
-
}
|
277
|
-
|
278
|
-
function GET_NTH_ARG(num) {
|
279
|
-
if (num >= args.length) { #{raise ArgumentError, 'too few arguments'} }
|
280
|
-
return args[num];
|
281
|
-
}
|
282
|
-
|
283
|
-
function GET_NEXT_ARG() {
|
284
|
-
switch (pos_arg_num) {
|
285
|
-
case -1: #{raise ArgumentError, "unnumbered(#{`seq_arg_num`}) mixed with numbered"}
|
286
|
-
case -2: #{raise ArgumentError, "unnumbered(#{`seq_arg_num`}) mixed with named"}
|
287
|
-
}
|
288
|
-
pos_arg_num = seq_arg_num++;
|
289
|
-
return GET_NTH_ARG(pos_arg_num - 1);
|
290
|
-
}
|
291
|
-
|
292
|
-
function GET_POS_ARG(num) {
|
293
|
-
if (pos_arg_num > 0) {
|
294
|
-
#{raise ArgumentError, "numbered(#{`num`}) after unnumbered(#{`pos_arg_num`})"}
|
295
|
-
}
|
296
|
-
if (pos_arg_num === -2) {
|
297
|
-
#{raise ArgumentError, "numbered(#{`num`}) after named"}
|
298
|
-
}
|
299
|
-
if (num < 1) {
|
300
|
-
#{raise ArgumentError, "invalid index - #{`num`}$"}
|
301
|
-
}
|
302
|
-
pos_arg_num = -1;
|
303
|
-
return GET_NTH_ARG(num - 1);
|
304
|
-
}
|
305
|
-
|
306
|
-
function GET_ARG() {
|
307
|
-
return (next_arg === undefined ? GET_NEXT_ARG() : next_arg);
|
308
|
-
}
|
309
|
-
|
310
|
-
function READ_NUM(label) {
|
311
|
-
var num, str = '';
|
312
|
-
for (;; i++) {
|
313
|
-
if (i === len) {
|
314
|
-
#{raise ArgumentError, 'malformed format string - %*[0-9]'}
|
315
|
-
}
|
316
|
-
if (format_string.charCodeAt(i) < 48 || format_string.charCodeAt(i) > 57) {
|
317
|
-
i--;
|
318
|
-
num = parseInt(str, 10) || 0;
|
319
|
-
if (num > 2147483647) {
|
320
|
-
#{raise ArgumentError, "#{`label`} too big"}
|
321
|
-
}
|
322
|
-
return num;
|
323
|
-
}
|
324
|
-
str += format_string.charAt(i);
|
325
|
-
}
|
326
|
-
}
|
327
|
-
|
328
|
-
function READ_NUM_AFTER_ASTER(label) {
|
329
|
-
var arg, num = READ_NUM(label);
|
330
|
-
if (format_string.charAt(i + 1) === '$') {
|
331
|
-
i++;
|
332
|
-
arg = GET_POS_ARG(num);
|
333
|
-
} else {
|
334
|
-
arg = GET_NEXT_ARG();
|
335
|
-
}
|
336
|
-
return #{`arg`.to_int};
|
337
|
-
}
|
338
|
-
|
339
|
-
for (i = format_string.indexOf('%'); i !== -1; i = format_string.indexOf('%', i)) {
|
340
|
-
str = undefined;
|
341
|
-
|
342
|
-
flags = FNONE;
|
343
|
-
width = -1;
|
344
|
-
precision = -1;
|
345
|
-
next_arg = undefined;
|
346
|
-
|
347
|
-
end_slice = i;
|
348
|
-
|
349
|
-
i++;
|
350
|
-
|
351
|
-
switch (format_string.charAt(i)) {
|
352
|
-
case '%':
|
353
|
-
begin_slice = i;
|
354
|
-
case '':
|
355
|
-
case '\n':
|
356
|
-
case '\0':
|
357
|
-
i++;
|
358
|
-
continue;
|
359
|
-
}
|
360
|
-
|
361
|
-
format_sequence: for (; i < len; i++) {
|
362
|
-
switch (format_string.charAt(i)) {
|
363
|
-
|
364
|
-
case ' ':
|
365
|
-
CHECK_FOR_FLAGS();
|
366
|
-
flags |= FSPACE;
|
367
|
-
continue format_sequence;
|
368
|
-
|
369
|
-
case '#':
|
370
|
-
CHECK_FOR_FLAGS();
|
371
|
-
flags |= FSHARP;
|
372
|
-
continue format_sequence;
|
373
|
-
|
374
|
-
case '+':
|
375
|
-
CHECK_FOR_FLAGS();
|
376
|
-
flags |= FPLUS;
|
377
|
-
continue format_sequence;
|
378
|
-
|
379
|
-
case '-':
|
380
|
-
CHECK_FOR_FLAGS();
|
381
|
-
flags |= FMINUS;
|
382
|
-
continue format_sequence;
|
383
|
-
|
384
|
-
case '0':
|
385
|
-
CHECK_FOR_FLAGS();
|
386
|
-
flags |= FZERO;
|
387
|
-
continue format_sequence;
|
388
|
-
|
389
|
-
case '1':
|
390
|
-
case '2':
|
391
|
-
case '3':
|
392
|
-
case '4':
|
393
|
-
case '5':
|
394
|
-
case '6':
|
395
|
-
case '7':
|
396
|
-
case '8':
|
397
|
-
case '9':
|
398
|
-
tmp_num = READ_NUM('width');
|
399
|
-
if (format_string.charAt(i + 1) === '$') {
|
400
|
-
if (i + 2 === len) {
|
401
|
-
str = '%';
|
402
|
-
i++;
|
403
|
-
break format_sequence;
|
404
|
-
}
|
405
|
-
if (next_arg !== undefined) {
|
406
|
-
#{raise ArgumentError, "value given twice - %#{`tmp_num`}$"}
|
407
|
-
}
|
408
|
-
next_arg = GET_POS_ARG(tmp_num);
|
409
|
-
i++;
|
410
|
-
} else {
|
411
|
-
CHECK_FOR_WIDTH();
|
412
|
-
flags |= FWIDTH;
|
413
|
-
width = tmp_num;
|
414
|
-
}
|
415
|
-
continue format_sequence;
|
416
|
-
|
417
|
-
case '<':
|
418
|
-
case '\{':
|
419
|
-
closing_brace_char = (format_string.charAt(i) === '<' ? '>' : '\}');
|
420
|
-
hash_parameter_key = '';
|
421
|
-
|
422
|
-
i++;
|
423
|
-
|
424
|
-
for (;; i++) {
|
425
|
-
if (i === len) {
|
426
|
-
#{raise ArgumentError, 'malformed name - unmatched parenthesis'}
|
427
|
-
}
|
428
|
-
if (format_string.charAt(i) === closing_brace_char) {
|
429
|
-
|
430
|
-
if (pos_arg_num > 0) {
|
431
|
-
#{raise ArgumentError, "named #{`hash_parameter_key`} after unnumbered(#{`pos_arg_num`})"}
|
432
|
-
}
|
433
|
-
if (pos_arg_num === -1) {
|
434
|
-
#{raise ArgumentError, "named #{`hash_parameter_key`} after numbered"}
|
435
|
-
}
|
436
|
-
pos_arg_num = -2;
|
437
|
-
|
438
|
-
if (args[0] === undefined || !args[0].$$is_hash) {
|
439
|
-
#{raise ArgumentError, 'one hash required'}
|
440
|
-
}
|
441
|
-
|
442
|
-
next_arg = #{`args[0]`.fetch(`hash_parameter_key`)};
|
443
|
-
|
444
|
-
if (closing_brace_char === '>') {
|
445
|
-
continue format_sequence;
|
446
|
-
} else {
|
447
|
-
str = next_arg.toString();
|
448
|
-
if (precision !== -1) { str = str.slice(0, precision); }
|
449
|
-
if (flags&FMINUS) {
|
450
|
-
while (str.length < width) { str = str + ' '; }
|
451
|
-
} else {
|
452
|
-
while (str.length < width) { str = ' ' + str; }
|
453
|
-
}
|
454
|
-
break format_sequence;
|
455
|
-
}
|
456
|
-
}
|
457
|
-
hash_parameter_key += format_string.charAt(i);
|
458
|
-
}
|
459
|
-
|
460
|
-
case '*':
|
461
|
-
i++;
|
462
|
-
CHECK_FOR_WIDTH();
|
463
|
-
flags |= FWIDTH;
|
464
|
-
width = READ_NUM_AFTER_ASTER('width');
|
465
|
-
if (width < 0) {
|
466
|
-
flags |= FMINUS;
|
467
|
-
width = -width;
|
468
|
-
}
|
469
|
-
continue format_sequence;
|
470
|
-
|
471
|
-
case '.':
|
472
|
-
if (flags&FPREC0) {
|
473
|
-
#{raise ArgumentError, 'precision given twice'}
|
474
|
-
}
|
475
|
-
flags |= FPREC|FPREC0;
|
476
|
-
precision = 0;
|
477
|
-
i++;
|
478
|
-
if (format_string.charAt(i) === '*') {
|
479
|
-
i++;
|
480
|
-
precision = READ_NUM_AFTER_ASTER('precision');
|
481
|
-
if (precision < 0) {
|
482
|
-
flags &= ~FPREC;
|
483
|
-
}
|
484
|
-
continue format_sequence;
|
485
|
-
}
|
486
|
-
precision = READ_NUM('precision');
|
487
|
-
continue format_sequence;
|
488
|
-
|
489
|
-
case 'd':
|
490
|
-
case 'i':
|
491
|
-
case 'u':
|
492
|
-
arg = #{Integer(`GET_ARG()`)};
|
493
|
-
if (arg >= 0) {
|
494
|
-
str = arg.toString();
|
495
|
-
while (str.length < precision) { str = '0' + str; }
|
496
|
-
if (flags&FMINUS) {
|
497
|
-
if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }
|
498
|
-
while (str.length < width) { str = str + ' '; }
|
499
|
-
} else {
|
500
|
-
if (flags&FZERO && precision === -1) {
|
501
|
-
while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; }
|
502
|
-
if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }
|
503
|
-
} else {
|
504
|
-
if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }
|
505
|
-
while (str.length < width) { str = ' ' + str; }
|
506
|
-
}
|
507
|
-
}
|
508
|
-
} else {
|
509
|
-
str = (-arg).toString();
|
510
|
-
while (str.length < precision) { str = '0' + str; }
|
511
|
-
if (flags&FMINUS) {
|
512
|
-
str = '-' + str;
|
513
|
-
while (str.length < width) { str = str + ' '; }
|
514
|
-
} else {
|
515
|
-
if (flags&FZERO && precision === -1) {
|
516
|
-
while (str.length < width - 1) { str = '0' + str; }
|
517
|
-
str = '-' + str;
|
518
|
-
} else {
|
519
|
-
str = '-' + str;
|
520
|
-
while (str.length < width) { str = ' ' + str; }
|
521
|
-
}
|
522
|
-
}
|
523
|
-
}
|
524
|
-
break format_sequence;
|
525
|
-
|
526
|
-
case 'b':
|
527
|
-
case 'B':
|
528
|
-
case 'o':
|
529
|
-
case 'x':
|
530
|
-
case 'X':
|
531
|
-
switch (format_string.charAt(i)) {
|
532
|
-
case 'b':
|
533
|
-
case 'B':
|
534
|
-
base_number = 2;
|
535
|
-
base_prefix = '0b';
|
536
|
-
base_neg_zero_regex = /^1+/;
|
537
|
-
base_neg_zero_digit = '1';
|
538
|
-
break;
|
539
|
-
case 'o':
|
540
|
-
base_number = 8;
|
541
|
-
base_prefix = '0';
|
542
|
-
base_neg_zero_regex = /^3?7+/;
|
543
|
-
base_neg_zero_digit = '7';
|
544
|
-
break;
|
545
|
-
case 'x':
|
546
|
-
case 'X':
|
547
|
-
base_number = 16;
|
548
|
-
base_prefix = '0x';
|
549
|
-
base_neg_zero_regex = /^f+/;
|
550
|
-
base_neg_zero_digit = 'f';
|
551
|
-
break;
|
552
|
-
}
|
553
|
-
arg = #{Integer(`GET_ARG()`)};
|
554
|
-
if (arg >= 0) {
|
555
|
-
str = arg.toString(base_number);
|
556
|
-
while (str.length < precision) { str = '0' + str; }
|
557
|
-
if (flags&FMINUS) {
|
558
|
-
if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }
|
559
|
-
if (flags&FSHARP && arg !== 0) { str = base_prefix + str; }
|
560
|
-
while (str.length < width) { str = str + ' '; }
|
561
|
-
} else {
|
562
|
-
if (flags&FZERO && precision === -1) {
|
563
|
-
while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0) - ((flags&FSHARP && arg !== 0) ? base_prefix.length : 0)) { str = '0' + str; }
|
564
|
-
if (flags&FSHARP && arg !== 0) { str = base_prefix + str; }
|
565
|
-
if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }
|
566
|
-
} else {
|
567
|
-
if (flags&FSHARP && arg !== 0) { str = base_prefix + str; }
|
568
|
-
if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }
|
569
|
-
while (str.length < width) { str = ' ' + str; }
|
570
|
-
}
|
571
|
-
}
|
572
|
-
} else {
|
573
|
-
if (flags&FPLUS || flags&FSPACE) {
|
574
|
-
str = (-arg).toString(base_number);
|
575
|
-
while (str.length < precision) { str = '0' + str; }
|
576
|
-
if (flags&FMINUS) {
|
577
|
-
if (flags&FSHARP) { str = base_prefix + str; }
|
578
|
-
str = '-' + str;
|
579
|
-
while (str.length < width) { str = str + ' '; }
|
580
|
-
} else {
|
581
|
-
if (flags&FZERO && precision === -1) {
|
582
|
-
while (str.length < width - 1 - (flags&FSHARP ? 2 : 0)) { str = '0' + str; }
|
583
|
-
if (flags&FSHARP) { str = base_prefix + str; }
|
584
|
-
str = '-' + str;
|
585
|
-
} else {
|
586
|
-
if (flags&FSHARP) { str = base_prefix + str; }
|
587
|
-
str = '-' + str;
|
588
|
-
while (str.length < width) { str = ' ' + str; }
|
589
|
-
}
|
590
|
-
}
|
591
|
-
} else {
|
592
|
-
str = (arg >>> 0).toString(base_number).replace(base_neg_zero_regex, base_neg_zero_digit);
|
593
|
-
while (str.length < precision - 2) { str = base_neg_zero_digit + str; }
|
594
|
-
if (flags&FMINUS) {
|
595
|
-
str = '..' + str;
|
596
|
-
if (flags&FSHARP) { str = base_prefix + str; }
|
597
|
-
while (str.length < width) { str = str + ' '; }
|
598
|
-
} else {
|
599
|
-
if (flags&FZERO && precision === -1) {
|
600
|
-
while (str.length < width - 2 - (flags&FSHARP ? base_prefix.length : 0)) { str = base_neg_zero_digit + str; }
|
601
|
-
str = '..' + str;
|
602
|
-
if (flags&FSHARP) { str = base_prefix + str; }
|
603
|
-
} else {
|
604
|
-
str = '..' + str;
|
605
|
-
if (flags&FSHARP) { str = base_prefix + str; }
|
606
|
-
while (str.length < width) { str = ' ' + str; }
|
607
|
-
}
|
608
|
-
}
|
609
|
-
}
|
610
|
-
}
|
611
|
-
if (format_string.charAt(i) === format_string.charAt(i).toUpperCase()) {
|
612
|
-
str = str.toUpperCase();
|
613
|
-
}
|
614
|
-
break format_sequence;
|
615
|
-
|
616
|
-
case 'f':
|
617
|
-
case 'e':
|
618
|
-
case 'E':
|
619
|
-
case 'g':
|
620
|
-
case 'G':
|
621
|
-
arg = #{Float(`GET_ARG()`)};
|
622
|
-
if (arg >= 0 || isNaN(arg)) {
|
623
|
-
if (arg === Infinity) {
|
624
|
-
str = 'Inf';
|
625
|
-
} else {
|
626
|
-
switch (format_string.charAt(i)) {
|
627
|
-
case 'f':
|
628
|
-
str = arg.toFixed(precision === -1 ? 6 : precision);
|
629
|
-
break;
|
630
|
-
case 'e':
|
631
|
-
case 'E':
|
632
|
-
str = arg.toExponential(precision === -1 ? 6 : precision);
|
633
|
-
break;
|
634
|
-
case 'g':
|
635
|
-
case 'G':
|
636
|
-
str = arg.toExponential();
|
637
|
-
exponent = parseInt(str.split('e')[1], 10);
|
638
|
-
if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) {
|
639
|
-
str = arg.toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision);
|
640
|
-
}
|
641
|
-
break;
|
642
|
-
}
|
643
|
-
}
|
644
|
-
if (flags&FMINUS) {
|
645
|
-
if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }
|
646
|
-
while (str.length < width) { str = str + ' '; }
|
647
|
-
} else {
|
648
|
-
if (flags&FZERO && arg !== Infinity && !isNaN(arg)) {
|
649
|
-
while (str.length < width - ((flags&FPLUS || flags&FSPACE) ? 1 : 0)) { str = '0' + str; }
|
650
|
-
if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }
|
651
|
-
} else {
|
652
|
-
if (flags&FPLUS || flags&FSPACE) { str = (flags&FPLUS ? '+' : ' ') + str; }
|
653
|
-
while (str.length < width) { str = ' ' + str; }
|
654
|
-
}
|
655
|
-
}
|
656
|
-
} else {
|
657
|
-
if (arg === -Infinity) {
|
658
|
-
str = 'Inf';
|
659
|
-
} else {
|
660
|
-
switch (format_string.charAt(i)) {
|
661
|
-
case 'f':
|
662
|
-
str = (-arg).toFixed(precision === -1 ? 6 : precision);
|
663
|
-
break;
|
664
|
-
case 'e':
|
665
|
-
case 'E':
|
666
|
-
str = (-arg).toExponential(precision === -1 ? 6 : precision);
|
667
|
-
break;
|
668
|
-
case 'g':
|
669
|
-
case 'G':
|
670
|
-
str = (-arg).toExponential();
|
671
|
-
exponent = parseInt(str.split('e')[1], 10);
|
672
|
-
if (!(exponent < -4 || exponent >= (precision === -1 ? 6 : precision))) {
|
673
|
-
str = (-arg).toPrecision(precision === -1 ? (flags&FSHARP ? 6 : undefined) : precision);
|
674
|
-
}
|
675
|
-
break;
|
676
|
-
}
|
677
|
-
}
|
678
|
-
if (flags&FMINUS) {
|
679
|
-
str = '-' + str;
|
680
|
-
while (str.length < width) { str = str + ' '; }
|
681
|
-
} else {
|
682
|
-
if (flags&FZERO && arg !== -Infinity) {
|
683
|
-
while (str.length < width - 1) { str = '0' + str; }
|
684
|
-
str = '-' + str;
|
685
|
-
} else {
|
686
|
-
str = '-' + str;
|
687
|
-
while (str.length < width) { str = ' ' + str; }
|
688
|
-
}
|
689
|
-
}
|
690
|
-
}
|
691
|
-
if (format_string.charAt(i) === format_string.charAt(i).toUpperCase() && arg !== Infinity && arg !== -Infinity && !isNaN(arg)) {
|
692
|
-
str = str.toUpperCase();
|
693
|
-
}
|
694
|
-
str = str.replace(/([eE][-+]?)([0-9])$/, '$10$2');
|
695
|
-
break format_sequence;
|
696
|
-
|
697
|
-
case 'a':
|
698
|
-
case 'A':
|
699
|
-
// Not implemented because there are no specs for this field type.
|
700
|
-
#{raise NotImplementedError, '`A` and `a` format field types are not implemented in Opal yet'}
|
701
|
-
|
702
|
-
case 'c':
|
703
|
-
arg = GET_ARG();
|
704
|
-
if (#{`arg`.respond_to?(:to_ary)}) { arg = #{`arg`.to_ary}[0]; }
|
705
|
-
if (#{`arg`.respond_to?(:to_str)}) {
|
706
|
-
str = #{`arg`.to_str};
|
707
|
-
} else {
|
708
|
-
str = String.fromCharCode(#{Opal.coerce_to(`arg`, Integer, :to_int)});
|
709
|
-
}
|
710
|
-
if (str.length !== 1) {
|
711
|
-
#{raise ArgumentError, '%c requires a character'}
|
712
|
-
}
|
713
|
-
if (flags&FMINUS) {
|
714
|
-
while (str.length < width) { str = str + ' '; }
|
715
|
-
} else {
|
716
|
-
while (str.length < width) { str = ' ' + str; }
|
717
|
-
}
|
718
|
-
break format_sequence;
|
719
|
-
|
720
|
-
case 'p':
|
721
|
-
str = #{`GET_ARG()`.inspect};
|
722
|
-
if (precision !== -1) { str = str.slice(0, precision); }
|
723
|
-
if (flags&FMINUS) {
|
724
|
-
while (str.length < width) { str = str + ' '; }
|
725
|
-
} else {
|
726
|
-
while (str.length < width) { str = ' ' + str; }
|
727
|
-
}
|
728
|
-
break format_sequence;
|
729
|
-
|
730
|
-
case 's':
|
731
|
-
str = #{`GET_ARG()`.to_s};
|
732
|
-
if (precision !== -1) { str = str.slice(0, precision); }
|
733
|
-
if (flags&FMINUS) {
|
734
|
-
while (str.length < width) { str = str + ' '; }
|
735
|
-
} else {
|
736
|
-
while (str.length < width) { str = ' ' + str; }
|
737
|
-
}
|
738
|
-
break format_sequence;
|
739
|
-
|
740
|
-
default:
|
741
|
-
#{raise ArgumentError, "malformed format string - %#{`format_string.charAt(i)`}"}
|
742
|
-
}
|
743
|
-
}
|
744
|
-
|
745
|
-
if (str === undefined) {
|
746
|
-
#{raise ArgumentError, 'malformed format string - %'}
|
747
|
-
}
|
748
|
-
|
749
|
-
result += format_string.slice(begin_slice, end_slice) + str;
|
750
|
-
begin_slice = i + 1;
|
751
|
-
}
|
752
|
-
|
753
|
-
if (#{$DEBUG} && pos_arg_num >= 0 && seq_arg_num < args.length) {
|
754
|
-
#{raise ArgumentError, 'too many arguments for format string'}
|
755
|
-
}
|
756
|
-
|
757
|
-
return result + format_string.slice(begin_slice);
|
758
|
-
}
|
759
|
-
end
|
760
|
-
|
761
227
|
def hash
|
762
228
|
__id__
|
763
229
|
end
|
@@ -842,7 +308,7 @@ module Kernel
|
|
842
308
|
|
843
309
|
if (!value.$$is_string) {
|
844
310
|
if (base !== undefined) {
|
845
|
-
#{raise ArgumentError,
|
311
|
+
#{raise ArgumentError, 'base specified for non string value'}
|
846
312
|
}
|
847
313
|
if (value === nil) {
|
848
314
|
#{raise TypeError, "can't convert nil into Integer"}
|
@@ -956,7 +422,7 @@ module Kernel
|
|
956
422
|
def Hash(arg)
|
957
423
|
return {} if arg.nil? || arg == []
|
958
424
|
return arg if Hash === arg
|
959
|
-
|
425
|
+
Opal.coerce_to!(arg, Hash, :to_hash)
|
960
426
|
end
|
961
427
|
|
962
428
|
def is_a?(klass)
|
@@ -976,9 +442,7 @@ module Kernel
|
|
976
442
|
alias kind_of? is_a?
|
977
443
|
|
978
444
|
def lambda(&block)
|
979
|
-
`block
|
980
|
-
|
981
|
-
block
|
445
|
+
`Opal.lambda(block)`
|
982
446
|
end
|
983
447
|
|
984
448
|
def load(file)
|
@@ -989,7 +453,7 @@ module Kernel
|
|
989
453
|
def loop
|
990
454
|
return enum_for(:loop) { Float::INFINITY } unless block_given?
|
991
455
|
|
992
|
-
while true
|
456
|
+
while true
|
993
457
|
begin
|
994
458
|
yield
|
995
459
|
rescue StopIteration => e
|
@@ -1007,7 +471,7 @@ module Kernel
|
|
1007
471
|
alias object_id __id__
|
1008
472
|
|
1009
473
|
def printf(*args)
|
1010
|
-
if args.
|
474
|
+
if args.any?
|
1011
475
|
print format(*args)
|
1012
476
|
end
|
1013
477
|
|
@@ -1016,7 +480,7 @@ module Kernel
|
|
1016
480
|
|
1017
481
|
def proc(&block)
|
1018
482
|
unless block
|
1019
|
-
raise ArgumentError,
|
483
|
+
raise ArgumentError, 'tried to create Proc object without a block'
|
1020
484
|
end
|
1021
485
|
|
1022
486
|
`block.$$is_lambda = false`
|
@@ -1043,8 +507,8 @@ module Kernel
|
|
1043
507
|
|
1044
508
|
def raise(exception = undefined, string = nil, _backtrace = nil)
|
1045
509
|
%x{
|
1046
|
-
if (exception == null &&
|
1047
|
-
throw
|
510
|
+
if (exception == null && #{$!} !== nil) {
|
511
|
+
throw #{$!};
|
1048
512
|
}
|
1049
513
|
if (exception == null) {
|
1050
514
|
exception = #{RuntimeError.new};
|
@@ -1056,18 +520,18 @@ module Kernel
|
|
1056
520
|
else if (exception.$$is_class && #{exception.respond_to?(:exception)}) {
|
1057
521
|
exception = #{exception.exception string};
|
1058
522
|
}
|
1059
|
-
else if (#{exception.
|
523
|
+
else if (#{exception.is_a?(Exception)}) {
|
1060
524
|
// exception is fine
|
1061
525
|
}
|
1062
526
|
else {
|
1063
527
|
exception = #{TypeError.new 'exception class/object expected'};
|
1064
528
|
}
|
1065
529
|
|
1066
|
-
if (
|
1067
|
-
Opal.exceptions.push(
|
530
|
+
if (#{$!} !== nil) {
|
531
|
+
Opal.exceptions.push(#{$!});
|
1068
532
|
}
|
1069
533
|
|
1070
|
-
|
534
|
+
#{$!} = exception;
|
1071
535
|
|
1072
536
|
throw exception;
|
1073
537
|
}
|
@@ -1162,7 +626,7 @@ module Kernel
|
|
1162
626
|
#{raise TypeError, "can't convert #{seconds.class} into time interval"}
|
1163
627
|
}
|
1164
628
|
if (seconds < 0) {
|
1165
|
-
#{raise ArgumentError,
|
629
|
+
#{raise ArgumentError, 'time interval must be positive'}
|
1166
630
|
}
|
1167
631
|
var get_time = Opal.global.performance ?
|
1168
632
|
function() {return performance.now()} :
|
@@ -1174,8 +638,6 @@ module Kernel
|
|
1174
638
|
}
|
1175
639
|
end
|
1176
640
|
|
1177
|
-
alias sprintf format
|
1178
|
-
|
1179
641
|
def srand(seed = Random.new_seed)
|
1180
642
|
Random.srand(seed)
|
1181
643
|
end
|
@@ -1206,13 +668,18 @@ module Kernel
|
|
1206
668
|
end
|
1207
669
|
|
1208
670
|
def throw(*args)
|
1209
|
-
raise UncaughtThrowError
|
671
|
+
raise UncaughtThrowError, args
|
1210
672
|
end
|
1211
673
|
|
1212
674
|
# basic implementation of open, delegate to File.open
|
1213
675
|
def open(*args, &block)
|
1214
676
|
File.open(*args, &block)
|
1215
677
|
end
|
678
|
+
|
679
|
+
def yield_self
|
680
|
+
return enum_for(:yield_self) { 1 } unless block_given?
|
681
|
+
yield self
|
682
|
+
end
|
1216
683
|
end
|
1217
684
|
|
1218
685
|
class Object
|