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/lib/opal/version.rb
CHANGED
data/lib/tilt/opal.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'tilt'
|
3
4
|
require 'opal/builder'
|
4
5
|
require 'opal/config'
|
5
6
|
require 'opal/version'
|
6
7
|
|
7
|
-
$OPAL_SOURCE_MAPS = {}
|
8
|
-
|
9
8
|
module Opal
|
10
9
|
class TiltTemplate < Tilt::Template
|
11
10
|
self.default_mime_type = 'application/javascript'
|
@@ -31,9 +30,10 @@ module Opal
|
|
31
30
|
end
|
32
31
|
|
33
32
|
def prepare
|
33
|
+
# stub
|
34
34
|
end
|
35
35
|
|
36
|
-
def evaluate(
|
36
|
+
def evaluate(_scope, _locals)
|
37
37
|
if builder = @options[:builder]
|
38
38
|
builder.dup.build(file).to_s
|
39
39
|
elsif @options[:build]
|
data/opal.gemspec
CHANGED
@@ -13,6 +13,17 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = 'https://opalrb.com'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
|
+
spec.metadata = {
|
17
|
+
"bug_tracker_uri" => "https://github.com/opal/opal/issues",
|
18
|
+
"changelog_uri" => "https://github.com/opal/opal/blob/v#{spec.version}/CHANGELOG.md",
|
19
|
+
"readme_uri" => "https://github.com/opal/opal/blob/v#{spec.version}/README.md",
|
20
|
+
"api_documentation_uri" => "http://opalrb.com/docs/api/v#{spec.version}/index.html",
|
21
|
+
"guides_uri" => "http://opalrb.com/docs/guides/v#{spec.version}/index.html",
|
22
|
+
"homepage_uri" => "https://opalrb.com/",
|
23
|
+
"chat_uri" => "https://gitter.im/opal/opal",
|
24
|
+
"source_code_uri" => "https://github.com/opal/opal",
|
25
|
+
}
|
26
|
+
|
16
27
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
17
28
|
`git ls-files -z`.split("\x0")
|
18
29
|
.reject { |f| f.match(%r{^(test|spec|features)/}) }
|
@@ -24,20 +35,18 @@ Gem::Specification.new do |spec|
|
|
24
35
|
|
25
36
|
spec.required_ruby_version = '>= 2.0.0'
|
26
37
|
|
27
|
-
spec.add_dependency 'sourcemap', '~> 0.1.0'
|
28
|
-
spec.add_dependency 'hike', '~> 1.2'
|
29
38
|
spec.add_dependency 'ast', '>= 2.3.0'
|
30
|
-
spec.add_dependency 'parser', '= 2.
|
39
|
+
spec.add_dependency 'parser', '= 2.5.3.0'
|
31
40
|
|
32
|
-
spec.add_development_dependency '
|
41
|
+
spec.add_development_dependency 'sourcemap', '~> 0.1.0'
|
33
42
|
spec.add_development_dependency 'rake', '~> 10.0'
|
34
|
-
spec.add_development_dependency '
|
35
|
-
spec.add_development_dependency '
|
36
|
-
spec.add_development_dependency '
|
37
|
-
spec.add_development_dependency 'bundler', '~> 1.5'
|
38
|
-
spec.add_development_dependency 'yard', '~> 0.8.7'
|
43
|
+
spec.add_development_dependency 'rspec', '~> 3.7'
|
44
|
+
spec.add_development_dependency 'octokit', '~> 4.9'
|
45
|
+
spec.add_development_dependency 'bundler'
|
39
46
|
spec.add_development_dependency 'rack-test'
|
40
47
|
spec.add_development_dependency 'opal-minitest'
|
41
48
|
spec.add_development_dependency 'selenium-webdriver'
|
42
49
|
spec.add_development_dependency 'benchmark-ips'
|
50
|
+
spec.add_development_dependency 'sinatra'
|
51
|
+
spec.add_development_dependency 'rubocop', '= 0.53.0'
|
43
52
|
end
|
data/opal/corelib/array.rb
CHANGED
@@ -5,7 +5,7 @@ class Array < `Array`
|
|
5
5
|
include Enumerable
|
6
6
|
|
7
7
|
# Mark all javascript arrays as being valid ruby arrays
|
8
|
-
`
|
8
|
+
`Opal.defineProperty(self.$$prototype, '$$is_array', true)`
|
9
9
|
|
10
10
|
%x{
|
11
11
|
function toArraySubclass(obj, klass) {
|
@@ -28,7 +28,7 @@ class Array < `Array`
|
|
28
28
|
}
|
29
29
|
|
30
30
|
if (size > #{Integer::MAX}) {
|
31
|
-
#{raise ArgumentError,
|
31
|
+
#{raise ArgumentError, 'array size too big'}
|
32
32
|
}
|
33
33
|
|
34
34
|
if (arguments.length > 2) {
|
@@ -53,7 +53,7 @@ class Array < `Array`
|
|
53
53
|
size = #{Opal.coerce_to size, Integer, :to_int}
|
54
54
|
|
55
55
|
if (size < 0) {
|
56
|
-
#{raise ArgumentError,
|
56
|
+
#{raise ArgumentError, 'negative array size'}
|
57
57
|
}
|
58
58
|
|
59
59
|
self.splice(0, self.length);
|
@@ -80,11 +80,11 @@ class Array < `Array`
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def &(other)
|
83
|
-
if Array === other
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
83
|
+
other = if Array === other
|
84
|
+
other.to_a
|
85
|
+
else
|
86
|
+
Opal.coerce_to(other, Array, :to_ary).to_a
|
87
|
+
end
|
88
88
|
|
89
89
|
%x{
|
90
90
|
var result = [], hash = #{{}}, i, length, item;
|
@@ -105,11 +105,11 @@ class Array < `Array`
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def |(other)
|
108
|
-
if Array === other
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
108
|
+
other = if Array === other
|
109
|
+
other.to_a
|
110
|
+
else
|
111
|
+
Opal.coerce_to(other, Array, :to_ary).to_a
|
112
|
+
end
|
113
113
|
|
114
114
|
%x{
|
115
115
|
var hash = #{{}}, i, length, item;
|
@@ -132,12 +132,12 @@ class Array < `Array`
|
|
132
132
|
other = Opal.coerce_to other, Integer, :to_int
|
133
133
|
|
134
134
|
if `other < 0`
|
135
|
-
raise ArgumentError,
|
135
|
+
raise ArgumentError, 'negative argument'
|
136
136
|
end
|
137
137
|
|
138
138
|
%x{
|
139
139
|
var result = [],
|
140
|
-
converted = #{
|
140
|
+
converted = #{to_a};
|
141
141
|
|
142
142
|
for (var i = 0; i < other; i++) {
|
143
143
|
result = result.concat(converted);
|
@@ -148,21 +148,21 @@ class Array < `Array`
|
|
148
148
|
end
|
149
149
|
|
150
150
|
def +(other)
|
151
|
-
if Array === other
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
151
|
+
other = if Array === other
|
152
|
+
other.to_a
|
153
|
+
else
|
154
|
+
Opal.coerce_to(other, Array, :to_ary).to_a
|
155
|
+
end
|
156
156
|
|
157
157
|
`self.concat(other)`
|
158
158
|
end
|
159
159
|
|
160
160
|
def -(other)
|
161
|
-
if Array === other
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
161
|
+
other = if Array === other
|
162
|
+
other.to_a
|
163
|
+
else
|
164
|
+
Opal.coerce_to(other, Array, :to_ary).to_a
|
165
|
+
end
|
166
166
|
|
167
167
|
return [] if `self.length === 0`
|
168
168
|
return `self.slice()` if `other.length === 0`
|
@@ -186,7 +186,7 @@ class Array < `Array`
|
|
186
186
|
end
|
187
187
|
|
188
188
|
def <<(object)
|
189
|
-
`self.push(object)
|
189
|
+
`self.push(object)`
|
190
190
|
|
191
191
|
self
|
192
192
|
end
|
@@ -237,9 +237,9 @@ class Array < `Array`
|
|
237
237
|
}
|
238
238
|
}
|
239
239
|
|
240
|
-
if (array
|
240
|
+
if (array.$$constructor !== Array)
|
241
241
|
array = #{`array`.to_a};
|
242
|
-
if (other
|
242
|
+
if (other.$$constructor !== Array)
|
243
243
|
other = #{`other`.to_a};
|
244
244
|
|
245
245
|
if (array.length !== other.length) {
|
@@ -362,13 +362,13 @@ class Array < `Array`
|
|
362
362
|
}
|
363
363
|
|
364
364
|
if Range === index
|
365
|
-
if Array === value
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
365
|
+
data = if Array === value
|
366
|
+
value.to_a
|
367
|
+
elsif value.respond_to? :to_ary
|
368
|
+
value.to_ary.to_a
|
369
|
+
else
|
370
|
+
[value]
|
371
|
+
end
|
372
372
|
|
373
373
|
%x{
|
374
374
|
var exclude = index.excl,
|
@@ -413,13 +413,13 @@ class Array < `Array`
|
|
413
413
|
length = value
|
414
414
|
value = extra
|
415
415
|
|
416
|
-
if Array === value
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
416
|
+
data = if Array === value
|
417
|
+
value.to_a
|
418
|
+
elsif value.respond_to? :to_ary
|
419
|
+
value.to_ary.to_a
|
420
|
+
else
|
421
|
+
[value]
|
422
|
+
end
|
423
423
|
end
|
424
424
|
|
425
425
|
%x{
|
@@ -459,8 +459,8 @@ class Array < `Array`
|
|
459
459
|
end
|
460
460
|
end
|
461
461
|
|
462
|
-
def any?
|
463
|
-
`if (self.length === 0) return false
|
462
|
+
def any?(pattern = undefined, &block)
|
463
|
+
`if (self.length === 0) return false`
|
464
464
|
super
|
465
465
|
end
|
466
466
|
|
@@ -546,14 +546,16 @@ class Array < `Array`
|
|
546
546
|
end
|
547
547
|
|
548
548
|
def cycle(n = nil, &block)
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
549
|
+
unless block_given?
|
550
|
+
return enum_for(:cycle, n) do
|
551
|
+
if n.nil?
|
552
|
+
Float::INFINITY
|
553
|
+
else
|
554
|
+
n = Opal.coerce_to!(n, Integer, :to_int)
|
555
|
+
n > 0 ? enumerator_size * n : 0
|
556
|
+
end
|
555
557
|
end
|
556
|
-
|
558
|
+
end
|
557
559
|
|
558
560
|
return if empty? || n == 0
|
559
561
|
|
@@ -605,7 +607,7 @@ class Array < `Array`
|
|
605
607
|
end
|
606
608
|
|
607
609
|
def collect(&block)
|
608
|
-
return enum_for(:collect){
|
610
|
+
return enum_for(:collect) { size } unless block_given?
|
609
611
|
|
610
612
|
%x{
|
611
613
|
var result = [];
|
@@ -620,7 +622,7 @@ class Array < `Array`
|
|
620
622
|
end
|
621
623
|
|
622
624
|
def collect!(&block)
|
623
|
-
return enum_for(:collect!){
|
625
|
+
return enum_for(:collect!) { size } unless block_given?
|
624
626
|
|
625
627
|
%x{
|
626
628
|
for (var i = 0, length = self.length; i < length; i++) {
|
@@ -648,7 +650,7 @@ class Array < `Array`
|
|
648
650
|
|
649
651
|
def combination(n)
|
650
652
|
num = Opal.coerce_to! n, Integer, :to_int
|
651
|
-
return enum_for(:combination, num){ `binomial_coefficient(#{self}.length, num)` } unless block_given?
|
653
|
+
return enum_for(:combination, num) { `binomial_coefficient(#{self}.length, num)` } unless block_given?
|
652
654
|
|
653
655
|
%x{
|
654
656
|
var i, length, stack, chosen, lev, done, next;
|
@@ -698,7 +700,7 @@ class Array < `Array`
|
|
698
700
|
num = Opal.coerce_to! n, Integer, :to_int
|
699
701
|
|
700
702
|
unless block_given?
|
701
|
-
return enum_for(:repeated_combination, num){ `binomial_coefficient(self.length + num - 1, num)` }
|
703
|
+
return enum_for(:repeated_combination, num) { `binomial_coefficient(self.length + num - 1, num)` }
|
702
704
|
end
|
703
705
|
|
704
706
|
%x{
|
@@ -755,11 +757,11 @@ class Array < `Array`
|
|
755
757
|
|
756
758
|
def concat(*others)
|
757
759
|
others = others.map do |other|
|
758
|
-
if Array === other
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
760
|
+
other = if Array === other
|
761
|
+
other.to_a
|
762
|
+
else
|
763
|
+
Opal.coerce_to(other, Array, :to_ary).to_a
|
764
|
+
end
|
763
765
|
|
764
766
|
if other.equal?(self)
|
765
767
|
other = other.dup
|
@@ -823,7 +825,7 @@ class Array < `Array`
|
|
823
825
|
end
|
824
826
|
|
825
827
|
def delete_if(&block)
|
826
|
-
return enum_for(:delete_if){
|
828
|
+
return enum_for(:delete_if) { size } unless block_given?
|
827
829
|
|
828
830
|
%x{
|
829
831
|
for (var i = 0, length = self.length, value; i < length; i++) {
|
@@ -869,19 +871,19 @@ class Array < `Array`
|
|
869
871
|
|
870
872
|
def dup
|
871
873
|
%x{
|
872
|
-
if (
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
self
|
877
|
-
|
874
|
+
if (self.$$class === Opal.Array &&
|
875
|
+
self.$$class.$allocate.$$pristine &&
|
876
|
+
self.$copy_instance_variables.$$pristine &&
|
877
|
+
self.$initialize_dup.$$pristine) {
|
878
|
+
return self.slice(0);
|
879
|
+
}
|
878
880
|
}
|
879
881
|
|
880
882
|
super
|
881
883
|
end
|
882
884
|
|
883
885
|
def each(&block)
|
884
|
-
return enum_for(:each){
|
886
|
+
return enum_for(:each) { size } unless block_given?
|
885
887
|
|
886
888
|
%x{
|
887
889
|
for (var i = 0, length = self.length; i < length; i++) {
|
@@ -893,7 +895,7 @@ class Array < `Array`
|
|
893
895
|
end
|
894
896
|
|
895
897
|
def each_index(&block)
|
896
|
-
return enum_for(:each_index){
|
898
|
+
return enum_for(:each_index) { size } unless block_given?
|
897
899
|
|
898
900
|
%x{
|
899
901
|
for (var i = 0, length = self.length; i < length; i++) {
|
@@ -1001,7 +1003,7 @@ class Array < `Array`
|
|
1001
1003
|
one, two = args
|
1002
1004
|
else
|
1003
1005
|
if `args.length == 0`
|
1004
|
-
raise ArgumentError,
|
1006
|
+
raise ArgumentError, 'wrong number of arguments (0 for 1..3)'
|
1005
1007
|
elsif `args.length > 3`
|
1006
1008
|
raise ArgumentError, "wrong number of arguments (#{args.length} for 1..3)"
|
1007
1009
|
end
|
@@ -1010,13 +1012,13 @@ class Array < `Array`
|
|
1010
1012
|
end
|
1011
1013
|
|
1012
1014
|
if Range === one
|
1013
|
-
raise TypeError,
|
1015
|
+
raise TypeError, 'length invalid with range' if two
|
1014
1016
|
|
1015
1017
|
left = Opal.coerce_to one.begin, Integer, :to_int
|
1016
1018
|
`left += this.length` if `left < 0`
|
1017
1019
|
raise RangeError, "#{one.inspect} out of range" if `left < 0`
|
1018
1020
|
|
1019
|
-
right
|
1021
|
+
right = Opal.coerce_to one.end, Integer, :to_int
|
1020
1022
|
`right += this.length` if `right < 0`
|
1021
1023
|
`right += 1` unless one.exclude_end?
|
1022
1024
|
|
@@ -1098,7 +1100,7 @@ class Array < `Array`
|
|
1098
1100
|
for (i = 0, length = array.length; i < length; i++) {
|
1099
1101
|
item = array[i];
|
1100
1102
|
|
1101
|
-
if (!#{Opal.respond_to? `item`, :to_ary}) {
|
1103
|
+
if (!#{Opal.respond_to? `item`, :to_ary, true}) {
|
1102
1104
|
result.push(item);
|
1103
1105
|
continue;
|
1104
1106
|
}
|
@@ -1214,7 +1216,7 @@ class Array < `Array`
|
|
1214
1216
|
}
|
1215
1217
|
end
|
1216
1218
|
|
1217
|
-
def index(object=undefined, &block)
|
1219
|
+
def index(object = undefined, &block)
|
1218
1220
|
%x{
|
1219
1221
|
var i, length, value;
|
1220
1222
|
|
@@ -1292,7 +1294,7 @@ class Array < `Array`
|
|
1292
1294
|
end
|
1293
1295
|
|
1294
1296
|
def join(sep = nil)
|
1295
|
-
return
|
1297
|
+
return '' if `self.length === 0`
|
1296
1298
|
|
1297
1299
|
if `sep === nil`
|
1298
1300
|
sep = $,
|
@@ -1352,7 +1354,7 @@ class Array < `Array`
|
|
1352
1354
|
end
|
1353
1355
|
|
1354
1356
|
def keep_if(&block)
|
1355
|
-
return enum_for(:keep_if){
|
1357
|
+
return enum_for(:keep_if) { size } unless block_given?
|
1356
1358
|
|
1357
1359
|
%x{
|
1358
1360
|
for (var i = 0, length = self.length, value; i < length; i++) {
|
@@ -1398,6 +1400,14 @@ class Array < `Array`
|
|
1398
1400
|
|
1399
1401
|
alias map! collect!
|
1400
1402
|
|
1403
|
+
def max(n = undefined, &block)
|
1404
|
+
each.max(n, &block)
|
1405
|
+
end
|
1406
|
+
|
1407
|
+
def min(&block)
|
1408
|
+
each.min(&block)
|
1409
|
+
end
|
1410
|
+
|
1401
1411
|
%x{
|
1402
1412
|
// Returns the product of from, from-1, ..., from - how_many + 1.
|
1403
1413
|
function descending_factorial(from, how_many) {
|
@@ -1413,9 +1423,9 @@ class Array < `Array`
|
|
1413
1423
|
|
1414
1424
|
def permutation(num = undefined, &block)
|
1415
1425
|
unless block_given?
|
1416
|
-
return enum_for(:permutation, num)
|
1426
|
+
return enum_for(:permutation, num) do
|
1417
1427
|
`descending_factorial(self.length, num === undefined ? self.length : num)`
|
1418
|
-
|
1428
|
+
end
|
1419
1429
|
end
|
1420
1430
|
|
1421
1431
|
%x{
|
@@ -1483,7 +1493,7 @@ class Array < `Array`
|
|
1483
1493
|
|
1484
1494
|
def repeated_permutation(n)
|
1485
1495
|
num = Opal.coerce_to! n, Integer, :to_int
|
1486
|
-
return enum_for(:repeated_permutation, num){ num >= 0 ?
|
1496
|
+
return enum_for(:repeated_permutation, num) { num >= 0 ? size**num : 0 } unless block_given?
|
1487
1497
|
|
1488
1498
|
%x{
|
1489
1499
|
function iterate(max, buffer, self) {
|
@@ -1547,7 +1557,7 @@ class Array < `Array`
|
|
1547
1557
|
}
|
1548
1558
|
resultlen *= len;
|
1549
1559
|
if (resultlen > 2147483647) {
|
1550
|
-
#{raise RangeError,
|
1560
|
+
#{raise RangeError, 'too big to product'}
|
1551
1561
|
}
|
1552
1562
|
lengths[i] = len;
|
1553
1563
|
counters[i] = 0;
|
@@ -1586,6 +1596,8 @@ class Array < `Array`
|
|
1586
1596
|
self
|
1587
1597
|
end
|
1588
1598
|
|
1599
|
+
alias append push
|
1600
|
+
|
1589
1601
|
def rassoc(object)
|
1590
1602
|
%x{
|
1591
1603
|
for (var i = 0, length = self.length, item; i < length; i++) {
|
@@ -1603,7 +1615,7 @@ class Array < `Array`
|
|
1603
1615
|
end
|
1604
1616
|
|
1605
1617
|
def reject(&block)
|
1606
|
-
return enum_for(:reject){
|
1618
|
+
return enum_for(:reject) { size } unless block_given?
|
1607
1619
|
|
1608
1620
|
%x{
|
1609
1621
|
var result = [];
|
@@ -1620,7 +1632,7 @@ class Array < `Array`
|
|
1620
1632
|
end
|
1621
1633
|
|
1622
1634
|
def reject!(&block)
|
1623
|
-
return enum_for(:reject!){
|
1635
|
+
return enum_for(:reject!) { size } unless block_given?
|
1624
1636
|
|
1625
1637
|
original = length
|
1626
1638
|
delete_if(&block)
|
@@ -1631,11 +1643,11 @@ class Array < `Array`
|
|
1631
1643
|
end
|
1632
1644
|
|
1633
1645
|
def replace(other)
|
1634
|
-
if Array === other
|
1635
|
-
|
1636
|
-
|
1637
|
-
|
1638
|
-
|
1646
|
+
other = if Array === other
|
1647
|
+
other.to_a
|
1648
|
+
else
|
1649
|
+
Opal.coerce_to(other, Array, :to_ary).to_a
|
1650
|
+
end
|
1639
1651
|
|
1640
1652
|
%x{
|
1641
1653
|
self.splice(0, self.length);
|
@@ -1654,7 +1666,7 @@ class Array < `Array`
|
|
1654
1666
|
end
|
1655
1667
|
|
1656
1668
|
def reverse_each(&block)
|
1657
|
-
return enum_for(:reverse_each){
|
1669
|
+
return enum_for(:reverse_each) { size } unless block_given?
|
1658
1670
|
|
1659
1671
|
reverse.each(&block)
|
1660
1672
|
self
|
@@ -1699,7 +1711,7 @@ class Array < `Array`
|
|
1699
1711
|
}
|
1700
1712
|
end
|
1701
1713
|
|
1702
|
-
def rotate(n=1)
|
1714
|
+
def rotate(n = 1)
|
1703
1715
|
n = Opal.coerce_to n, Integer, :to_int
|
1704
1716
|
%x{
|
1705
1717
|
var ary, idx, firstPart, lastPart;
|
@@ -1720,7 +1732,7 @@ class Array < `Array`
|
|
1720
1732
|
}
|
1721
1733
|
end
|
1722
1734
|
|
1723
|
-
def rotate!(cnt=1)
|
1735
|
+
def rotate!(cnt = 1)
|
1724
1736
|
%x{
|
1725
1737
|
if (self.length === 0 || self.length === 1) {
|
1726
1738
|
return self;
|
@@ -1738,8 +1750,8 @@ class Array < `Array`
|
|
1738
1750
|
|
1739
1751
|
def rand(size)
|
1740
1752
|
random = Opal.coerce_to @rng.rand(size), Integer, :to_int
|
1741
|
-
raise RangeError,
|
1742
|
-
raise RangeError,
|
1753
|
+
raise RangeError, 'random value must be >= 0' if `random < 0`
|
1754
|
+
raise RangeError, 'random value must be less than Array size' unless `random < size`
|
1743
1755
|
|
1744
1756
|
random
|
1745
1757
|
end
|
@@ -1761,16 +1773,16 @@ class Array < `Array`
|
|
1761
1773
|
options = Opal.coerce_to options, Hash, :to_hash
|
1762
1774
|
end
|
1763
1775
|
|
1764
|
-
if count
|
1765
|
-
raise ArgumentError,
|
1776
|
+
if count && `count < 0`
|
1777
|
+
raise ArgumentError, 'count must be greater than 0'
|
1766
1778
|
end
|
1767
1779
|
|
1768
1780
|
rng = options[:random] if options
|
1769
|
-
if rng
|
1770
|
-
|
1771
|
-
|
1772
|
-
|
1773
|
-
|
1781
|
+
rng = if rng && rng.respond_to?(:rand)
|
1782
|
+
SampleRandom.new rng
|
1783
|
+
else
|
1784
|
+
Kernel
|
1785
|
+
end
|
1774
1786
|
|
1775
1787
|
return `self[#{rng.rand(`self.length`)}]` unless count
|
1776
1788
|
|
@@ -1857,7 +1869,7 @@ class Array < `Array`
|
|
1857
1869
|
end
|
1858
1870
|
|
1859
1871
|
def select(&block)
|
1860
|
-
return enum_for(:select){
|
1872
|
+
return enum_for(:select) { size } unless block_given?
|
1861
1873
|
|
1862
1874
|
%x{
|
1863
1875
|
var result = [];
|
@@ -1867,7 +1879,7 @@ class Array < `Array`
|
|
1867
1879
|
|
1868
1880
|
value = Opal.yield1(block, item);
|
1869
1881
|
|
1870
|
-
if (value
|
1882
|
+
if (Opal.truthy(value)) {
|
1871
1883
|
result.push(item);
|
1872
1884
|
}
|
1873
1885
|
}
|
@@ -1877,7 +1889,7 @@ class Array < `Array`
|
|
1877
1889
|
end
|
1878
1890
|
|
1879
1891
|
def select!(&block)
|
1880
|
-
return enum_for(:select!){
|
1892
|
+
return enum_for(:select!) { size } unless block_given?
|
1881
1893
|
|
1882
1894
|
%x{
|
1883
1895
|
var original = self.length;
|
@@ -2080,7 +2092,7 @@ class Array < `Array`
|
|
2080
2092
|
end
|
2081
2093
|
|
2082
2094
|
def sort_by!(&block)
|
2083
|
-
return enum_for(:sort_by!){
|
2095
|
+
return enum_for(:sort_by!) { size } unless block_given?
|
2084
2096
|
|
2085
2097
|
replace sort_by(&block)
|
2086
2098
|
end
|
@@ -2150,12 +2162,12 @@ class Array < `Array`
|
|
2150
2162
|
result = []
|
2151
2163
|
max = nil
|
2152
2164
|
|
2153
|
-
each
|
2154
|
-
if Array === row
|
2155
|
-
|
2156
|
-
|
2157
|
-
|
2158
|
-
|
2165
|
+
each do |row|
|
2166
|
+
row = if Array === row
|
2167
|
+
row.to_a
|
2168
|
+
else
|
2169
|
+
Opal.coerce_to(row, Array, :to_ary).to_a
|
2170
|
+
end
|
2159
2171
|
|
2160
2172
|
max ||= `row.length`
|
2161
2173
|
|
@@ -2163,11 +2175,11 @@ class Array < `Array`
|
|
2163
2175
|
raise IndexError, "element size differs (#{`row.length`} should be #{max})"
|
2164
2176
|
end
|
2165
2177
|
|
2166
|
-
`row.length`.times
|
2178
|
+
`row.length`.times do |i|
|
2167
2179
|
entry = (result[i] ||= [])
|
2168
2180
|
entry << row.at(i)
|
2169
|
-
|
2170
|
-
|
2181
|
+
end
|
2182
|
+
end
|
2171
2183
|
|
2172
2184
|
result
|
2173
2185
|
end
|
@@ -2230,11 +2242,13 @@ class Array < `Array`
|
|
2230
2242
|
self
|
2231
2243
|
end
|
2232
2244
|
|
2245
|
+
alias prepend unshift
|
2246
|
+
|
2233
2247
|
def values_at(*args)
|
2234
|
-
out = []
|
2248
|
+
out = []
|
2235
2249
|
|
2236
2250
|
args.each do |elem|
|
2237
|
-
if elem.
|
2251
|
+
if elem.is_a? Range
|
2238
2252
|
finish = Opal.coerce_to elem.last, Integer, :to_int
|
2239
2253
|
start = Opal.coerce_to elem.first, Integer, :to_int
|
2240
2254
|
|
@@ -2320,7 +2334,7 @@ class Array < `Array`
|
|
2320
2334
|
|
2321
2335
|
def self.inherited(klass)
|
2322
2336
|
%x{
|
2323
|
-
klass.$$
|
2337
|
+
klass.$$prototype.$to_a = function() {
|
2324
2338
|
return this.slice(0, this.length);
|
2325
2339
|
}
|
2326
2340
|
}
|
@@ -2330,6 +2344,10 @@ class Array < `Array`
|
|
2330
2344
|
super.reject { |ivar| `/^@\d+$/.test(#{ivar})` || ivar == '@length' }
|
2331
2345
|
end
|
2332
2346
|
|
2333
|
-
Opal.pristine
|
2334
|
-
|
2347
|
+
Opal.pristine singleton_class, :allocate
|
2348
|
+
Opal.pristine self, :copy_instance_variables, :initialize_dup
|
2335
2349
|
|
2350
|
+
def pack(*args)
|
2351
|
+
raise "To use Array#pack, you must first require 'corelib/array/pack'."
|
2352
|
+
end
|
2353
|
+
end
|