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
@@ -0,0 +1,135 @@
|
|
1
|
+
module PackUnpack
|
2
|
+
%x{
|
3
|
+
var directives = [
|
4
|
+
// Integer
|
5
|
+
'C',
|
6
|
+
'S',
|
7
|
+
'L',
|
8
|
+
'Q',
|
9
|
+
'J',
|
10
|
+
|
11
|
+
'c',
|
12
|
+
's',
|
13
|
+
'l',
|
14
|
+
'q',
|
15
|
+
'j',
|
16
|
+
|
17
|
+
'n',
|
18
|
+
'N',
|
19
|
+
'v',
|
20
|
+
'V',
|
21
|
+
|
22
|
+
'U',
|
23
|
+
'w',
|
24
|
+
|
25
|
+
// Float
|
26
|
+
'D',
|
27
|
+
'd',
|
28
|
+
'F',
|
29
|
+
'f',
|
30
|
+
'E',
|
31
|
+
'e',
|
32
|
+
'G',
|
33
|
+
'g',
|
34
|
+
|
35
|
+
// String
|
36
|
+
'A',
|
37
|
+
'a',
|
38
|
+
'Z',
|
39
|
+
'B',
|
40
|
+
'b',
|
41
|
+
'H',
|
42
|
+
'h',
|
43
|
+
'u',
|
44
|
+
'M',
|
45
|
+
'm',
|
46
|
+
|
47
|
+
'P',
|
48
|
+
'p',
|
49
|
+
|
50
|
+
// Misc
|
51
|
+
'@',
|
52
|
+
'X',
|
53
|
+
'x'
|
54
|
+
];
|
55
|
+
|
56
|
+
var modifiers = [
|
57
|
+
'!', // ignored
|
58
|
+
'_', // ignored
|
59
|
+
'>', // big endian
|
60
|
+
'<' // little endian
|
61
|
+
];
|
62
|
+
|
63
|
+
self.eachDirectiveAndCount = function(format, callback) {
|
64
|
+
var currentDirective,
|
65
|
+
currentCount,
|
66
|
+
currentModifiers,
|
67
|
+
countSpecified;
|
68
|
+
|
69
|
+
function reset() {
|
70
|
+
currentDirective = null;
|
71
|
+
currentCount = 0;
|
72
|
+
currentModifiers = [];
|
73
|
+
countSpecified = false;
|
74
|
+
}
|
75
|
+
|
76
|
+
reset();
|
77
|
+
|
78
|
+
function yieldAndReset() {
|
79
|
+
if (currentDirective == null) {
|
80
|
+
reset();
|
81
|
+
return;
|
82
|
+
}
|
83
|
+
|
84
|
+
var directiveSupportsModifiers = /[sSiIlLqQjJ]/.test(currentDirective);
|
85
|
+
|
86
|
+
if (!directiveSupportsModifiers && currentModifiers.length > 0) {
|
87
|
+
#{raise ArgumentError, "'#{`currentModifiers[0]`}' allowed only after types sSiIlLqQjJ"}
|
88
|
+
}
|
89
|
+
|
90
|
+
if (currentModifiers.indexOf('<') !== -1 && currentModifiers.indexOf('>') !== -1) {
|
91
|
+
#{raise RangeError, "Can't use both '<' and '>'"}
|
92
|
+
}
|
93
|
+
|
94
|
+
if (!countSpecified) {
|
95
|
+
currentCount = 1;
|
96
|
+
}
|
97
|
+
|
98
|
+
if (currentModifiers.indexOf('>') !== -1) {
|
99
|
+
currentDirective = currentDirective + '>';
|
100
|
+
}
|
101
|
+
|
102
|
+
callback(currentDirective, currentCount);
|
103
|
+
|
104
|
+
reset();
|
105
|
+
}
|
106
|
+
|
107
|
+
for (var i = 0; i < format.length; i++) {
|
108
|
+
var currentChar = format[i];
|
109
|
+
|
110
|
+
if (directives.indexOf(currentChar) !== -1) {
|
111
|
+
// Directive char always resets current state
|
112
|
+
yieldAndReset();
|
113
|
+
currentDirective = currentChar;
|
114
|
+
} else if (currentDirective) {
|
115
|
+
if (/\d/.test(currentChar)) {
|
116
|
+
// Count can be represented as a sequence of digits
|
117
|
+
currentCount = currentCount * 10 + parseInt(currentChar, 10);
|
118
|
+
countSpecified = true;
|
119
|
+
} else if (currentChar === '*' && countSpecified === false) {
|
120
|
+
// Count can be represented by a star character
|
121
|
+
currentCount = Infinity;
|
122
|
+
countSpecified = true;
|
123
|
+
} else if (modifiers.indexOf(currentChar) !== -1 && countSpecified === false) {
|
124
|
+
// Directives can be specified only after directive and before count
|
125
|
+
currentModifiers.push(currentChar);
|
126
|
+
} else {
|
127
|
+
yieldAndReset();
|
128
|
+
}
|
129
|
+
}
|
130
|
+
}
|
131
|
+
|
132
|
+
yieldAndReset();
|
133
|
+
}
|
134
|
+
}
|
135
|
+
end
|
data/opal/corelib/proc.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
class Proc < `Function`
|
2
|
-
`
|
3
|
-
`
|
2
|
+
`Opal.defineProperty(self.$$prototype, '$$is_proc', true)`
|
3
|
+
`Opal.defineProperty(self.$$prototype, '$$is_lambda', false)`
|
4
4
|
|
5
5
|
def self.new(&block)
|
6
6
|
unless block
|
7
|
-
raise ArgumentError,
|
7
|
+
raise ArgumentError, 'tried to create a Proc object without a block'
|
8
8
|
end
|
9
9
|
|
10
10
|
block
|
@@ -170,5 +170,4 @@ class Proc < `Function`
|
|
170
170
|
end
|
171
171
|
|
172
172
|
alias clone dup
|
173
|
-
|
174
173
|
end
|
data/opal/corelib/process.rb
CHANGED
@@ -39,7 +39,7 @@ class Process
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def self.clock_gettime(clock_id, unit = :float_second)
|
42
|
-
clock = @__clocks__[clock_id]
|
42
|
+
(clock = @__clocks__[clock_id]) || raise(Errno::EINVAL, "clock_gettime(#{clock_id}) #{@__clocks__[clock_id]}")
|
43
43
|
%x{
|
44
44
|
var ms = clock();
|
45
45
|
switch (unit) {
|
data/opal/corelib/random.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'corelib/random/seedrandom.js'
|
2
|
-
|
3
1
|
class Random
|
4
2
|
attr_reader :seed, :state
|
5
3
|
|
@@ -11,22 +9,17 @@ class Random
|
|
11
9
|
|
12
10
|
def reseed(seed)
|
13
11
|
@seed = seed
|
14
|
-
`self.$rng =
|
12
|
+
`self.$rng = Opal.$$rand.reseed(seed)`
|
15
13
|
end
|
16
14
|
|
17
|
-
`var $seed_generator = new Math.seedrandom('opal', { entropy: true });`
|
18
|
-
|
19
15
|
def self.new_seed
|
20
|
-
|
21
|
-
return Math.abs($seed_generator.int32());
|
22
|
-
}
|
16
|
+
`Opal.$$rand.new_seed()`
|
23
17
|
end
|
24
18
|
|
25
19
|
def self.rand(limit = undefined)
|
26
20
|
DEFAULT.rand(limit)
|
27
21
|
end
|
28
22
|
|
29
|
-
|
30
23
|
def self.srand(n = Random.new_seed)
|
31
24
|
n = Opal.coerce_to!(n, Integer, :to_int)
|
32
25
|
|
@@ -35,7 +28,15 @@ class Random
|
|
35
28
|
previous_seed
|
36
29
|
end
|
37
30
|
|
38
|
-
|
31
|
+
def self.urandom(size)
|
32
|
+
size = Opal.coerce_to!(size, Integer, :to_int)
|
33
|
+
|
34
|
+
if size < 0
|
35
|
+
raise ArgumentError, 'negative string size (or size too big)'
|
36
|
+
end
|
37
|
+
|
38
|
+
Array.new(size) { rand(255).chr }.join.encode('ASCII-8BIT')
|
39
|
+
end
|
39
40
|
|
40
41
|
def ==(other)
|
41
42
|
return false unless Random === other
|
@@ -45,18 +46,15 @@ class Random
|
|
45
46
|
|
46
47
|
def bytes(length)
|
47
48
|
length = Opal.coerce_to!(length, Integer, :to_int)
|
48
|
-
|
49
|
-
|
50
|
-
.map { rand(255).chr }
|
51
|
-
.join
|
52
|
-
.encode(Encoding::ASCII_8BIT)
|
49
|
+
|
50
|
+
Array.new(length) { rand(255).chr }.join.encode('ASCII-8BIT')
|
53
51
|
end
|
54
52
|
|
55
53
|
def rand(limit = undefined)
|
56
54
|
%x{
|
57
55
|
function randomFloat() {
|
58
56
|
self.state++;
|
59
|
-
return self.$rng
|
57
|
+
return Opal.$$rand.rand(self.$rng);
|
60
58
|
}
|
61
59
|
|
62
60
|
function randomInt() {
|
@@ -114,4 +112,14 @@ class Random
|
|
114
112
|
}
|
115
113
|
}
|
116
114
|
end
|
115
|
+
|
116
|
+
def self.generator=(generator)
|
117
|
+
`Opal.$$rand = #{generator}`
|
118
|
+
|
119
|
+
if const_defined? :DEFAULT
|
120
|
+
DEFAULT.reseed
|
121
|
+
else
|
122
|
+
const_set :DEFAULT, new(new_seed)
|
123
|
+
end
|
124
|
+
end
|
117
125
|
end
|
@@ -0,0 +1,137 @@
|
|
1
|
+
/*
|
2
|
+
This is based on an adaptation of Makoto Matsumoto and Takuji Nishimura's code
|
3
|
+
done by Sean McCullough <banksean@gmail.com> and Dave Heitzman
|
4
|
+
<daveheitzman@yahoo.com>, subsequently readapted from an updated version of
|
5
|
+
ruby's random.c (rev c38a183032a7826df1adabd8aa0725c713d53e1c).
|
6
|
+
|
7
|
+
The original copyright notice from random.c follows.
|
8
|
+
|
9
|
+
This is based on trimmed version of MT19937. To get the original version,
|
10
|
+
contact <http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html>.
|
11
|
+
|
12
|
+
The original copyright notice follows.
|
13
|
+
|
14
|
+
A C-program for MT19937, with initialization improved 2002/2/10.
|
15
|
+
Coded by Takuji Nishimura and Makoto Matsumoto.
|
16
|
+
This is a faster version by taking Shawn Cokus's optimization,
|
17
|
+
Matthe Bellew's simplification, Isaku Wada's real version.
|
18
|
+
|
19
|
+
Before using, initialize the state by using init_genrand(mt, seed)
|
20
|
+
or init_by_array(mt, init_key, key_length).
|
21
|
+
|
22
|
+
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
|
23
|
+
All rights reserved.
|
24
|
+
|
25
|
+
Redistribution and use in source and binary forms, with or without
|
26
|
+
modification, are permitted provided that the following conditions
|
27
|
+
are met:
|
28
|
+
|
29
|
+
1. Redistributions of source code must retain the above copyright
|
30
|
+
notice, this list of conditions and the following disclaimer.
|
31
|
+
|
32
|
+
2. Redistributions in binary form must reproduce the above copyright
|
33
|
+
notice, this list of conditions and the following disclaimer in the
|
34
|
+
documentation and/or other materials provided with the distribution.
|
35
|
+
|
36
|
+
3. The names of its contributors may not be used to endorse or promote
|
37
|
+
products derived from this software without specific prior written
|
38
|
+
permission.
|
39
|
+
|
40
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
41
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
42
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
43
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
44
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
45
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
46
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
47
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
48
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
49
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
50
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
51
|
+
|
52
|
+
|
53
|
+
Any feedback is very welcome.
|
54
|
+
http://www.math.keio.ac.jp/matumoto/emt.html
|
55
|
+
email: matumoto@math.keio.ac.jp
|
56
|
+
*/
|
57
|
+
var MersenneTwister = (function() {
|
58
|
+
/* Period parameters */
|
59
|
+
var N = 624;
|
60
|
+
var M = 397;
|
61
|
+
var MATRIX_A = 0x9908b0df; /* constant vector a */
|
62
|
+
var UMASK = 0x80000000; /* most significant w-r bits */
|
63
|
+
var LMASK = 0x7fffffff; /* least significant r bits */
|
64
|
+
var MIXBITS = function(u,v) { return ( ((u) & UMASK) | ((v) & LMASK) ); };
|
65
|
+
var TWIST = function(u,v) { return (MIXBITS((u),(v)) >>> 1) ^ ((v & 0x1) ? MATRIX_A : 0x0); };
|
66
|
+
|
67
|
+
function init(s) {
|
68
|
+
var mt = {left: 0, next: N, state: new Array(N)};
|
69
|
+
init_genrand(mt, s);
|
70
|
+
return mt;
|
71
|
+
}
|
72
|
+
|
73
|
+
/* initializes mt[N] with a seed */
|
74
|
+
function init_genrand(mt, s) {
|
75
|
+
var j, i;
|
76
|
+
mt.state[0] = s >>> 0;
|
77
|
+
for (j=1; j<N; j++) {
|
78
|
+
mt.state[j] = (1812433253 * ((mt.state[j-1] ^ (mt.state[j-1] >> 30) >>> 0)) + j);
|
79
|
+
/* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */
|
80
|
+
/* In the previous versions, MSBs of the seed affect */
|
81
|
+
/* only MSBs of the array state[]. */
|
82
|
+
/* 2002/01/09 modified by Makoto Matsumoto */
|
83
|
+
mt.state[j] &= 0xffffffff; /* for >32 bit machines */
|
84
|
+
}
|
85
|
+
mt.left = 1;
|
86
|
+
mt.next = N;
|
87
|
+
}
|
88
|
+
|
89
|
+
/* generate N words at one time */
|
90
|
+
function next_state(mt) {
|
91
|
+
var p = 0, _p = mt.state;
|
92
|
+
var j;
|
93
|
+
|
94
|
+
mt.left = N;
|
95
|
+
mt.next = 0;
|
96
|
+
|
97
|
+
for (j=N-M+1; --j; p++)
|
98
|
+
_p[p] = _p[p+(M)] ^ TWIST(_p[p+(0)], _p[p+(1)]);
|
99
|
+
|
100
|
+
for (j=M; --j; p++)
|
101
|
+
_p[p] = _p[p+(M-N)] ^ TWIST(_p[p+(0)], _p[p+(1)]);
|
102
|
+
|
103
|
+
_p[p] = _p[p+(M-N)] ^ TWIST(_p[p+(0)], _p[0]);
|
104
|
+
}
|
105
|
+
|
106
|
+
/* generates a random number on [0,0xffffffff]-interval */
|
107
|
+
function genrand_int32(mt) {
|
108
|
+
/* mt must be initialized */
|
109
|
+
var y;
|
110
|
+
|
111
|
+
if (--mt.left <= 0) next_state(mt);
|
112
|
+
y = mt.state[mt.next++];
|
113
|
+
|
114
|
+
/* Tempering */
|
115
|
+
y ^= (y >>> 11);
|
116
|
+
y ^= (y << 7) & 0x9d2c5680;
|
117
|
+
y ^= (y << 15) & 0xefc60000;
|
118
|
+
y ^= (y >>> 18);
|
119
|
+
|
120
|
+
return y >>> 0;
|
121
|
+
}
|
122
|
+
|
123
|
+
function int_pair_to_real_exclusive(a, b) {
|
124
|
+
a >>>= 5;
|
125
|
+
b >>>= 6;
|
126
|
+
return(a*67108864.0+b)*(1.0/9007199254740992.0);
|
127
|
+
}
|
128
|
+
|
129
|
+
// generates a random number on [0,1) with 53-bit resolution
|
130
|
+
function genrand_real(mt) {
|
131
|
+
/* mt must be initialized */
|
132
|
+
var a = genrand_int32(mt), b = genrand_int32(mt);
|
133
|
+
return int_pair_to_real_exclusive(a, b);
|
134
|
+
}
|
135
|
+
|
136
|
+
return { genrand_real: genrand_real, init: init };
|
137
|
+
})();
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'corelib/random/MersenneTwister'
|
2
|
+
|
3
|
+
class Random
|
4
|
+
`var MAX_INT = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1`
|
5
|
+
|
6
|
+
MERSENNE_TWISTER_GENERATOR = `{
|
7
|
+
new_seed: function() { return Math.round(Math.random() * MAX_INT); },
|
8
|
+
reseed: function(seed) { return MersenneTwister.init(seed); },
|
9
|
+
rand: function(mt) { return MersenneTwister.genrand_real(mt); }
|
10
|
+
}`
|
11
|
+
|
12
|
+
self.generator = MERSENNE_TWISTER_GENERATOR
|
13
|
+
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
class Random
|
2
2
|
%x{
|
3
|
+
var module = { exports: {} };
|
4
|
+
|
3
5
|
/* jshint ignore:start */
|
4
6
|
/*
|
5
7
|
seedrandom.min.js 2.4.1 (original source: https://github.com/davidbau/seedrandom/blob/2.4.1/seedrandom.min.js)
|
@@ -11,5 +13,15 @@ class Random
|
|
11
13
|
*/
|
12
14
|
!function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;a<q;)a=(a+c)*l,b*=l,c=t.g(1);for(;a>=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e<l;)g[e]=e++;for(e=0;e<l;e++)g[e]=g[f=s&f+a[e%c]+(b=g[e])],g[f]=b;(d.g=function(a){for(var b,c=0,e=d.i,f=d.j,g=d.S;a--;)b=g[e=s&e+1],c=c*l+g[s&(g[e]=g[f=s&f+b])+(g[f]=b)];return d.i=e,d.j=f,c})(l)}function e(a,b){return b.i=a.i,b.j=a.j,b.S=a.S.slice(),b}function f(a,b){var c,d=[],e=typeof a;if(b&&"object"==e)for(c in a)if(a.hasOwnProperty(c))try{d.push(f(a[c],b-1))}catch(a){}return d.length?d:"string"==e?a:a+"\0"}function g(a,b){for(var c,d=a+"",e=0;e<d.length;)b[s&e]=s&(c^=19*b[s&e])+d.charCodeAt(e++);return i(b)}function h(){try{if(j)return i(j.randomBytes(l));var b=new Uint8Array(l);return(k.crypto||k.msCrypto).getRandomValues(b),i(b)}catch(b){var c=k.navigator,d=c&&c.plugins;return[+new Date,k,d,k.screen,i(a)]}}function i(a){return String.fromCharCode.apply(0,a)}var j,k=this,l=256,m=6,n=52,o="random",p=b.pow(l,m),q=b.pow(2,n),r=2*q,s=l-1;if(b["seed"+o]=c,g(b.random(),a),"object"==typeof module&&module.exports){module.exports=c;try{j=require("crypto")}catch(a){}}else"function"==typeof define&&define.amd&&define('seekrandom',function(){return c})}([],Math);
|
13
15
|
/* jshint ignore:end */
|
16
|
+
var seedrandom = module.exports
|
17
|
+
var $seed_generator = new Math.seedrandom('opal', { entropy: true })
|
14
18
|
}
|
19
|
+
|
20
|
+
SEEDRANDOM_GENERATOR = `{
|
21
|
+
new_seed: function() { return Math.abs($seed_generator.int32()); },
|
22
|
+
reseed: function(seed) { return new seedrandom(seed); },
|
23
|
+
rand: function($rng) { return $rng.quick(); }
|
24
|
+
}`
|
25
|
+
|
26
|
+
self.generator = SEEDRANDOM_GENERATOR
|
15
27
|
end
|
data/opal/corelib/range.rb
CHANGED
@@ -3,13 +3,13 @@ require 'corelib/enumerable'
|
|
3
3
|
class Range
|
4
4
|
include Enumerable
|
5
5
|
|
6
|
-
`
|
6
|
+
`self.$$prototype.$$is_range = true`
|
7
7
|
|
8
8
|
attr_reader :begin, :end
|
9
9
|
|
10
10
|
def initialize(first, last, exclude = false)
|
11
11
|
raise NameError, "'initialize' called twice" if @begin
|
12
|
-
raise ArgumentError,
|
12
|
+
raise ArgumentError, 'bad value for range' unless first <=> last
|
13
13
|
|
14
14
|
@begin = first
|
15
15
|
@end = last
|
@@ -49,19 +49,19 @@ class Range
|
|
49
49
|
%x{
|
50
50
|
var i, limit;
|
51
51
|
|
52
|
-
if (
|
53
|
-
if (
|
52
|
+
if (#{@begin}.$$is_number && #{@end}.$$is_number) {
|
53
|
+
if (#{@begin} % 1 !== 0 || #{@end} % 1 !== 0) {
|
54
54
|
#{raise TypeError, "can't iterate from Float"}
|
55
55
|
}
|
56
56
|
|
57
|
-
for (i =
|
57
|
+
for (i = #{@begin}, limit = #{@end} + #{@excl ? 0 : 1}; i < limit; i++) {
|
58
58
|
block(i);
|
59
59
|
}
|
60
60
|
|
61
61
|
return self;
|
62
62
|
}
|
63
63
|
|
64
|
-
if (
|
64
|
+
if (#{@begin}.$$is_string && #{@end}.$$is_string) {
|
65
65
|
#{@begin.upto(@end, @excl, &block)}
|
66
66
|
return self;
|
67
67
|
}
|
@@ -89,8 +89,8 @@ class Range
|
|
89
89
|
return false unless Range === other
|
90
90
|
|
91
91
|
@excl === other.exclude_end? &&
|
92
|
-
|
93
|
-
|
92
|
+
@begin.eql?(other.begin) &&
|
93
|
+
@end.eql?(other.end)
|
94
94
|
end
|
95
95
|
|
96
96
|
def exclude_end?
|
@@ -102,7 +102,7 @@ class Range
|
|
102
102
|
super
|
103
103
|
end
|
104
104
|
|
105
|
-
alias
|
105
|
+
alias include? cover?
|
106
106
|
|
107
107
|
def last(n = undefined)
|
108
108
|
return @end if `n == null`
|
@@ -118,11 +118,11 @@ class Range
|
|
118
118
|
elsif @excl && @begin == @end
|
119
119
|
nil
|
120
120
|
else
|
121
|
-
|
121
|
+
`#{@excl} ? #{@end} - 1 : #{@end}`
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
125
|
-
alias
|
125
|
+
alias member? cover?
|
126
126
|
|
127
127
|
def min
|
128
128
|
if block_given?
|
@@ -137,16 +137,16 @@ class Range
|
|
137
137
|
end
|
138
138
|
|
139
139
|
def size
|
140
|
-
|
141
|
-
|
142
|
-
|
140
|
+
range_begin = @begin
|
141
|
+
range_end = @end
|
142
|
+
range_end -= 1 if @excl
|
143
143
|
|
144
|
-
return nil unless Numeric ===
|
145
|
-
return 0 if
|
144
|
+
return nil unless Numeric === range_begin && Numeric === range_end
|
145
|
+
return 0 if range_end < range_begin
|
146
146
|
infinity = Float::INFINITY
|
147
|
-
return infinity if
|
147
|
+
return infinity if [range_begin.abs, range_end.abs].include?(infinity)
|
148
148
|
|
149
|
-
|
149
|
+
`Math.abs(range_end - range_begin) + 1`.to_i
|
150
150
|
end
|
151
151
|
|
152
152
|
def step(n = 1)
|
@@ -199,14 +199,13 @@ class Range
|
|
199
199
|
}
|
200
200
|
}
|
201
201
|
|
202
|
-
|
203
202
|
unless block_given?
|
204
|
-
return enum_for(:step, n)
|
203
|
+
return enum_for(:step, n) do
|
205
204
|
%x{
|
206
205
|
coerceStepSize();
|
207
206
|
return enumeratorSize();
|
208
207
|
}
|
209
|
-
|
208
|
+
end
|
210
209
|
end
|
211
210
|
|
212
211
|
`coerceStepSize()`
|
@@ -217,8 +216,8 @@ class Range
|
|
217
216
|
current = @begin + i * n
|
218
217
|
if @excl
|
219
218
|
break if current >= @end
|
220
|
-
|
221
|
-
break
|
219
|
+
elsif current > @end
|
220
|
+
break
|
222
221
|
end
|
223
222
|
yield(current)
|
224
223
|
i += 1
|
@@ -226,7 +225,7 @@ class Range
|
|
226
225
|
else
|
227
226
|
%x{
|
228
227
|
if (#{@begin}.$$is_string && #{@end}.$$is_string && n % 1 !== 0) {
|
229
|
-
#{raise TypeError,
|
228
|
+
#{raise TypeError, 'no implicit conversion to float from string'}
|
230
229
|
}
|
231
230
|
}
|
232
231
|
each_with_index do |value, idx|
|
@@ -247,11 +246,11 @@ class Range
|
|
247
246
|
end
|
248
247
|
|
249
248
|
def to_s
|
250
|
-
"#{@begin}#{
|
249
|
+
"#{@begin}#{@excl ? '...' : '..'}#{@end}"
|
251
250
|
end
|
252
251
|
|
253
252
|
def inspect
|
254
|
-
"#{@begin.inspect}#{
|
253
|
+
"#{@begin.inspect}#{@excl ? '...' : '..'}#{@end.inspect}"
|
255
254
|
end
|
256
255
|
|
257
256
|
def marshal_load(args)
|