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/marshal.rb
CHANGED
@@ -5,20 +5,8 @@ module Marshal
|
|
5
5
|
MAJOR_VERSION = 4
|
6
6
|
MINOR_VERSION = 8
|
7
7
|
|
8
|
-
# For simulating binary strings
|
9
|
-
#
|
10
|
-
class BinaryString < String
|
11
|
-
def encoding
|
12
|
-
Encoding::BINARY
|
13
|
-
end
|
14
|
-
|
15
|
-
def +(other)
|
16
|
-
BinaryString.new(super)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
8
|
class << self
|
21
|
-
|
9
|
+
def dump(object)
|
22
10
|
WriteBuffer.new(object).write
|
23
11
|
end
|
24
12
|
|
@@ -41,7 +41,7 @@ module Marshal
|
|
41
41
|
def read(cache: true)
|
42
42
|
code = read_char
|
43
43
|
# The first character indicates the type of the object
|
44
|
-
|
44
|
+
case code
|
45
45
|
when '0'
|
46
46
|
nil
|
47
47
|
when 'T'
|
@@ -93,14 +93,13 @@ module Marshal
|
|
93
93
|
when 'd'
|
94
94
|
raise NotImplementedError, 'Data type cannot be demarshaled'
|
95
95
|
else
|
96
|
-
raise ArgumentError,
|
96
|
+
raise ArgumentError, 'dump format error'
|
97
97
|
end
|
98
|
-
result
|
99
98
|
end
|
100
99
|
|
101
100
|
def read_byte
|
102
101
|
if @index >= length
|
103
|
-
raise ArgumentError,
|
102
|
+
raise ArgumentError, 'marshal data too short'
|
104
103
|
end
|
105
104
|
result = @buffer[@index]
|
106
105
|
@index += 1
|
@@ -155,15 +154,15 @@ module Marshal
|
|
155
154
|
#
|
156
155
|
def read_float
|
157
156
|
s = read_string(cache: false)
|
158
|
-
result = if s ==
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
157
|
+
result = if s == 'nan'
|
158
|
+
0.0 / 0
|
159
|
+
elsif s == 'inf'
|
160
|
+
1.0 / 0
|
161
|
+
elsif s == '-inf'
|
162
|
+
-1.0 / 0
|
163
|
+
else
|
164
|
+
s.to_f
|
165
|
+
end
|
167
166
|
@object_cache << result
|
168
167
|
result
|
169
168
|
end
|
@@ -175,7 +174,7 @@ module Marshal
|
|
175
174
|
size = read_fixnum * 2
|
176
175
|
result = 0
|
177
176
|
(0...size).each do |exp|
|
178
|
-
result +=
|
177
|
+
result += read_char.ord * 2**(exp * 8)
|
179
178
|
end
|
180
179
|
result = result.to_i * sign
|
181
180
|
@object_cache << result
|
@@ -484,10 +483,10 @@ module Marshal
|
|
484
483
|
value = read(cache: false)
|
485
484
|
|
486
485
|
result = if klass < Hash
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
486
|
+
klass[value]
|
487
|
+
else
|
488
|
+
klass.new(value)
|
489
|
+
end
|
491
490
|
|
492
491
|
@object_cache << result
|
493
492
|
|
@@ -555,11 +554,9 @@ module Marshal
|
|
555
554
|
# re-raises Marshal-specific error when it's missing
|
556
555
|
#
|
557
556
|
def safe_const_get(const_name)
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
raise ArgumentError, "undefined class/module #{const_name}"
|
562
|
-
end
|
557
|
+
Object.const_get(const_name)
|
558
|
+
rescue NameError
|
559
|
+
raise ArgumentError, "undefined class/module #{const_name}"
|
563
560
|
end
|
564
561
|
end
|
565
562
|
end
|
@@ -14,7 +14,7 @@ class Boolean
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
class
|
17
|
+
class Integer
|
18
18
|
def __marshal__(buffer)
|
19
19
|
if self >= -0x40000000 && self < 0x40000000
|
20
20
|
buffer.append('i')
|
@@ -116,7 +116,7 @@ class Module
|
|
116
116
|
end
|
117
117
|
|
118
118
|
buffer.save_link(self)
|
119
|
-
buffer.append(
|
119
|
+
buffer.append('m')
|
120
120
|
buffer.write_module(self)
|
121
121
|
end
|
122
122
|
end
|
@@ -132,7 +132,7 @@ class Class
|
|
132
132
|
end
|
133
133
|
|
134
134
|
buffer.save_link(self)
|
135
|
-
buffer.append(
|
135
|
+
buffer.append('c')
|
136
136
|
buffer.write_class(self)
|
137
137
|
end
|
138
138
|
end
|
@@ -141,7 +141,7 @@ class BasicObject
|
|
141
141
|
def __marshal__(buffer)
|
142
142
|
buffer.save_link(self)
|
143
143
|
buffer.write_extends(self)
|
144
|
-
buffer.append(
|
144
|
+
buffer.append('o')
|
145
145
|
buffer.write_object(self)
|
146
146
|
end
|
147
147
|
end
|
@@ -150,7 +150,7 @@ class Range
|
|
150
150
|
def __marshal__(buffer)
|
151
151
|
buffer.save_link(self)
|
152
152
|
buffer.write_extends(self)
|
153
|
-
buffer.append(
|
153
|
+
buffer.append('o')
|
154
154
|
buffer.append_symbol(self.class.name)
|
155
155
|
buffer.write_fixnum(3)
|
156
156
|
buffer.append_symbol('excl')
|
@@ -169,7 +169,7 @@ class Struct
|
|
169
169
|
buffer.write_extends(self)
|
170
170
|
buffer.append('S')
|
171
171
|
buffer.append_symbol(self.class.name)
|
172
|
-
buffer.write_fixnum(
|
172
|
+
buffer.write_fixnum(length)
|
173
173
|
each_pair do |attr_name, value|
|
174
174
|
buffer.append_symbol(attr_name)
|
175
175
|
buffer.write(value)
|
@@ -182,9 +182,17 @@ module Marshal
|
|
182
182
|
class WriteBuffer
|
183
183
|
attr_reader :buffer
|
184
184
|
|
185
|
+
%x{
|
186
|
+
function binaryString(s) {
|
187
|
+
s = new String(s);
|
188
|
+
s.encoding = #{Encoding::BINARY};
|
189
|
+
return s;
|
190
|
+
}
|
191
|
+
}
|
192
|
+
|
185
193
|
def initialize(object)
|
186
194
|
@object = object
|
187
|
-
@buffer =
|
195
|
+
@buffer = ''
|
188
196
|
@cache = []
|
189
197
|
@extends = Hash.new { |h, k| h[k] = [] }
|
190
198
|
append(version)
|
@@ -202,7 +210,7 @@ module Marshal
|
|
202
210
|
when nil, true, false, Proc, Method, MatchData, Range, Struct, Array, Class, Module, Hash, Regexp
|
203
211
|
object.__marshal__(self)
|
204
212
|
when Integer
|
205
|
-
|
213
|
+
Integer.instance_method(:__marshal__).bind(object).call(self)
|
206
214
|
when Float
|
207
215
|
Float.instance_method(:__marshal__).bind(object).call(self)
|
208
216
|
when String
|
@@ -212,7 +220,7 @@ module Marshal
|
|
212
220
|
end
|
213
221
|
end
|
214
222
|
|
215
|
-
@buffer
|
223
|
+
`binaryString(#{@buffer})`
|
216
224
|
end
|
217
225
|
|
218
226
|
def write_fixnum(n)
|
@@ -265,7 +273,7 @@ module Marshal
|
|
265
273
|
|
266
274
|
arr.each do |x|
|
267
275
|
append(`String.fromCharCode(x & 0xff)`)
|
268
|
-
append(`String.fromCharCode(#{(x/0x100).floor})`)
|
276
|
+
append(`String.fromCharCode(#{(x / 0x100).floor})`)
|
269
277
|
end
|
270
278
|
end
|
271
279
|
|
@@ -326,7 +334,7 @@ module Marshal
|
|
326
334
|
end
|
327
335
|
|
328
336
|
def write_ivars_suffix(object, force = false)
|
329
|
-
if object.instance_variables.
|
337
|
+
if object.instance_variables.empty? && !force
|
330
338
|
return
|
331
339
|
end
|
332
340
|
|
@@ -341,7 +349,7 @@ module Marshal
|
|
341
349
|
singleton_mods = object.singleton_class.ancestors.reject { |mod| mod.is_a?(Class) }
|
342
350
|
class_mods = object.class.ancestors.reject { |mod| mod.is_a?(Class) }
|
343
351
|
own_mods = singleton_mods - class_mods
|
344
|
-
|
352
|
+
unless own_mods.empty?
|
345
353
|
own_mods.each do |mod|
|
346
354
|
append('e')
|
347
355
|
append_symbol(mod.name)
|
@@ -382,7 +390,7 @@ module Marshal
|
|
382
390
|
value = object._dump(0)
|
383
391
|
|
384
392
|
unless value.is_a?(String)
|
385
|
-
raise TypeError,
|
393
|
+
raise TypeError, '_dump() must return string'
|
386
394
|
end
|
387
395
|
|
388
396
|
write_ivars_prefix(value)
|
@@ -392,13 +400,13 @@ module Marshal
|
|
392
400
|
end
|
393
401
|
|
394
402
|
def write_ivars_prefix(object)
|
395
|
-
|
403
|
+
unless object.instance_variables.empty?
|
396
404
|
append('I')
|
397
405
|
end
|
398
406
|
end
|
399
407
|
|
400
408
|
def append(s)
|
401
|
-
@buffer += s
|
409
|
+
`#{@buffer} += #{s}`
|
402
410
|
end
|
403
411
|
|
404
412
|
def version
|
data/opal/corelib/math.rb
CHANGED
@@ -21,19 +21,15 @@ module Math
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.float!(value)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
raise Opal.type_error(value, Float)
|
28
|
-
end
|
24
|
+
Float(value)
|
25
|
+
rescue ArgumentError
|
26
|
+
raise Opal.type_error(value, Float)
|
29
27
|
end
|
30
28
|
|
31
29
|
def self.integer!(value)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
raise Opal.type_error(value, Integer)
|
36
|
-
end
|
30
|
+
Integer(value)
|
31
|
+
rescue ArgumentError
|
32
|
+
raise Opal.type_error(value, Integer)
|
37
33
|
end
|
38
34
|
|
39
35
|
module_function
|
@@ -158,7 +154,7 @@ module Math
|
|
158
154
|
|
159
155
|
unless defined?(`Math.erf`)
|
160
156
|
%x{
|
161
|
-
Math
|
157
|
+
Opal.defineProperty(Math, 'erf', function(x) {
|
162
158
|
var A1 = 0.254829592,
|
163
159
|
A2 = -0.284496736,
|
164
160
|
A3 = 1.421413741,
|
@@ -178,7 +174,7 @@ module Math
|
|
178
174
|
var y = 1.0 - (((((A5 * t + A4) * t) + A3) * t + A2) * t + A1) * t * Math.exp(-x * x);
|
179
175
|
|
180
176
|
return sign * y;
|
181
|
-
}
|
177
|
+
});
|
182
178
|
}
|
183
179
|
end
|
184
180
|
|
@@ -188,7 +184,7 @@ module Math
|
|
188
184
|
|
189
185
|
unless defined?(`Math.erfc`)
|
190
186
|
%x{
|
191
|
-
Math
|
187
|
+
Opal.defineProperty(Math, 'erfc', function(x) {
|
192
188
|
var z = Math.abs(x),
|
193
189
|
t = 1.0 / (0.5 * z + 1.0);
|
194
190
|
|
@@ -211,7 +207,7 @@ module Math
|
|
211
207
|
else {
|
212
208
|
return a;
|
213
209
|
}
|
214
|
-
}
|
210
|
+
});
|
215
211
|
}
|
216
212
|
end
|
217
213
|
|
@@ -274,7 +270,7 @@ module Math
|
|
274
270
|
}
|
275
271
|
|
276
272
|
if (n === -1 || n === -Infinity) {
|
277
|
-
#{raise DomainError,
|
273
|
+
#{raise DomainError, 'Numerical argument is out of domain - "gamma"'};
|
278
274
|
}
|
279
275
|
|
280
276
|
if (#{Integer === n}) {
|
@@ -352,7 +348,7 @@ module Math
|
|
352
348
|
|
353
349
|
%x{
|
354
350
|
if (isNaN(exponent)) {
|
355
|
-
#{raise RangeError,
|
351
|
+
#{raise RangeError, 'float NaN out of range of integer'};
|
356
352
|
}
|
357
353
|
|
358
354
|
return mantissa * Math.pow(2, exponent);
|
data/opal/corelib/method.rb
CHANGED
@@ -26,9 +26,9 @@ class Method
|
|
26
26
|
|
27
27
|
def call(*args, &block)
|
28
28
|
%x{
|
29
|
-
|
29
|
+
#{@method}.$$p = block;
|
30
30
|
|
31
|
-
return
|
31
|
+
return #{@method}.apply(#{@receiver}, args);
|
32
32
|
}
|
33
33
|
end
|
34
34
|
|
@@ -41,8 +41,10 @@ class Method
|
|
41
41
|
def to_proc
|
42
42
|
%x{
|
43
43
|
var proc = self.$call.bind(self);
|
44
|
-
proc.$$unbound =
|
44
|
+
proc.$$unbound = #{@method};
|
45
45
|
proc.$$is_lambda = true;
|
46
|
+
proc.$$arity = #{@method}.$$arity;
|
47
|
+
proc.$$parameters = #{@method}.$$parameters;
|
46
48
|
return proc;
|
47
49
|
}
|
48
50
|
end
|
data/opal/corelib/module.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
class Module
|
2
2
|
def self.allocate
|
3
3
|
%x{
|
4
|
-
var module;
|
5
|
-
|
6
|
-
|
4
|
+
var module = Opal.allocate_module(nil, function(){});
|
5
|
+
// Link the prototype of Module subclasses
|
6
|
+
if (self !== Opal.Module) Object.setPrototypeOf(module, self.$$prototype);
|
7
7
|
return module;
|
8
8
|
}
|
9
9
|
end
|
10
10
|
|
11
11
|
def initialize(&block)
|
12
|
-
|
12
|
+
module_eval(&block) if block_given?
|
13
13
|
end
|
14
14
|
|
15
15
|
def ===(object)
|
@@ -20,7 +20,7 @@ class Module
|
|
20
20
|
|
21
21
|
def <(other)
|
22
22
|
unless Module === other
|
23
|
-
raise TypeError,
|
23
|
+
raise TypeError, 'compared with non class/module'
|
24
24
|
end
|
25
25
|
|
26
26
|
# class cannot be a descendant of itself
|
@@ -55,7 +55,7 @@ class Module
|
|
55
55
|
|
56
56
|
def >(other)
|
57
57
|
unless Module === other
|
58
|
-
raise TypeError,
|
58
|
+
raise TypeError, 'compared with non class/module'
|
59
59
|
end
|
60
60
|
|
61
61
|
other < self
|
@@ -111,7 +111,7 @@ class Module
|
|
111
111
|
|
112
112
|
def attr_reader(*names)
|
113
113
|
%x{
|
114
|
-
var proto = self.$$
|
114
|
+
var proto = self.$$prototype;
|
115
115
|
|
116
116
|
for (var i = names.length - 1; i >= 0; i--) {
|
117
117
|
var name = names[i],
|
@@ -132,17 +132,12 @@ class Module
|
|
132
132
|
})(ivar);
|
133
133
|
|
134
134
|
// initialize the instance variable as nil
|
135
|
-
proto
|
135
|
+
Opal.defineProperty(proto, ivar, nil);
|
136
136
|
|
137
137
|
body.$$parameters = [];
|
138
138
|
body.$$arity = 0;
|
139
139
|
|
140
|
-
|
141
|
-
proto.constructor.prototype[id] = body;
|
142
|
-
}
|
143
|
-
else {
|
144
|
-
Opal.defn(self, id, body);
|
145
|
-
}
|
140
|
+
Opal.defn(self, id, body);
|
146
141
|
}
|
147
142
|
}
|
148
143
|
|
@@ -151,7 +146,7 @@ class Module
|
|
151
146
|
|
152
147
|
def attr_writer(*names)
|
153
148
|
%x{
|
154
|
-
var proto = self.$$
|
149
|
+
var proto = self.$$prototype;
|
155
150
|
|
156
151
|
for (var i = names.length - 1; i >= 0; i--) {
|
157
152
|
var name = names[i],
|
@@ -170,14 +165,9 @@ class Module
|
|
170
165
|
body.$$arity = 1;
|
171
166
|
|
172
167
|
// initialize the instance variable as nil
|
173
|
-
proto
|
168
|
+
Opal.defineProperty(proto, ivar, nil);
|
174
169
|
|
175
|
-
|
176
|
-
proto.constructor.prototype[id] = body;
|
177
|
-
}
|
178
|
-
else {
|
179
|
-
Opal.defn(self, id, body);
|
180
|
-
}
|
170
|
+
Opal.defn(self, id, body);
|
181
171
|
}
|
182
172
|
}
|
183
173
|
|
@@ -229,16 +219,16 @@ class Module
|
|
229
219
|
delete self.$$cvars[name];
|
230
220
|
return value;
|
231
221
|
} else {
|
232
|
-
#{raise NameError
|
222
|
+
#{raise NameError, "cannot remove #{name} for #{self}"}
|
233
223
|
}
|
234
224
|
}
|
235
225
|
end
|
236
226
|
|
237
|
-
def constants(inherit=true)
|
227
|
+
def constants(inherit = true)
|
238
228
|
`Opal.constants(self, inherit)`
|
239
229
|
end
|
240
230
|
|
241
|
-
def self.constants(inherit=undefined)
|
231
|
+
def self.constants(inherit = undefined)
|
242
232
|
%x{
|
243
233
|
if (inherit == null) {
|
244
234
|
var nesting = (self.$$nesting || []).concat(Opal.Object),
|
@@ -309,7 +299,7 @@ class Module
|
|
309
299
|
|
310
300
|
%x{
|
311
301
|
if (inherit) {
|
312
|
-
return
|
302
|
+
return $$([self], name);
|
313
303
|
} else {
|
314
304
|
return Opal.const_get_local(self, name);
|
315
305
|
}
|
@@ -337,7 +327,7 @@ class Module
|
|
337
327
|
def const_set(name, value)
|
338
328
|
name = Opal.const_name!(name)
|
339
329
|
|
340
|
-
if
|
330
|
+
if name !~ Opal::CONST_NAME_REGEXP || name.start_with?('::')
|
341
331
|
raise NameError.new("wrong constant name #{name}", name)
|
342
332
|
end
|
343
333
|
|
@@ -351,25 +341,25 @@ class Module
|
|
351
341
|
|
352
342
|
def define_method(name, method = undefined, &block)
|
353
343
|
if `method === undefined && block === nil`
|
354
|
-
raise ArgumentError,
|
344
|
+
raise ArgumentError, 'tried to create a Proc object without a block'
|
355
345
|
end
|
356
346
|
|
357
347
|
block ||= case method
|
358
|
-
|
359
|
-
|
348
|
+
when Proc
|
349
|
+
method
|
360
350
|
|
361
|
-
|
362
|
-
|
351
|
+
when Method
|
352
|
+
`#{method.to_proc}.$$unbound`
|
363
353
|
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
354
|
+
when UnboundMethod
|
355
|
+
->(*args) {
|
356
|
+
bound = method.bind(self)
|
357
|
+
bound.call(*args)
|
358
|
+
}
|
369
359
|
|
370
|
-
|
371
|
-
|
372
|
-
|
360
|
+
else
|
361
|
+
raise TypeError, "wrong argument type #{block.class} (expected Proc/Method)"
|
362
|
+
end
|
373
363
|
|
374
364
|
%x{
|
375
365
|
var id = '$' + name;
|
@@ -417,32 +407,7 @@ class Module
|
|
417
407
|
end
|
418
408
|
|
419
409
|
def included_modules
|
420
|
-
|
421
|
-
var results;
|
422
|
-
|
423
|
-
var module_chain = function(klass) {
|
424
|
-
var included = [];
|
425
|
-
|
426
|
-
for (var i = 0, ii = klass.$$inc.length; i < ii; i++) {
|
427
|
-
var mod_or_class = klass.$$inc[i];
|
428
|
-
included.push(mod_or_class);
|
429
|
-
included = included.concat(module_chain(mod_or_class));
|
430
|
-
}
|
431
|
-
|
432
|
-
return included;
|
433
|
-
};
|
434
|
-
|
435
|
-
results = module_chain(self);
|
436
|
-
|
437
|
-
// need superclass's modules
|
438
|
-
if (self.$$is_class) {
|
439
|
-
for (var cls = self; cls; cls = cls.$$super) {
|
440
|
-
results = results.concat(module_chain(cls));
|
441
|
-
}
|
442
|
-
}
|
443
|
-
|
444
|
-
return results;
|
445
|
-
}
|
410
|
+
`Opal.included_modules(self)`
|
446
411
|
end
|
447
412
|
|
448
413
|
def include?(mod)
|
@@ -466,7 +431,7 @@ class Module
|
|
466
431
|
|
467
432
|
def instance_method(name)
|
468
433
|
%x{
|
469
|
-
var meth = self.$$
|
434
|
+
var meth = self.$$prototype['$' + name];
|
470
435
|
|
471
436
|
if (!meth || meth.$$stub) {
|
472
437
|
#{raise NameError.new("undefined method `#{name}' for class `#{self.name}'", name)};
|
@@ -478,43 +443,11 @@ class Module
|
|
478
443
|
|
479
444
|
def instance_methods(include_super = true)
|
480
445
|
%x{
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
for (var prop in proto) {
|
486
|
-
if (prop.charAt(0) !== '$' || prop.charAt(1) === '$') {
|
487
|
-
continue;
|
488
|
-
}
|
489
|
-
|
490
|
-
value = proto[prop];
|
491
|
-
|
492
|
-
if (typeof(value) !== "function") {
|
493
|
-
continue;
|
494
|
-
}
|
495
|
-
|
496
|
-
if (value.$$stub) {
|
497
|
-
continue;
|
498
|
-
}
|
499
|
-
|
500
|
-
if (!self.$$is_module) {
|
501
|
-
if (self !== Opal.BasicObject && value === Opal.BasicObject.$$proto[prop]) {
|
502
|
-
continue;
|
503
|
-
}
|
504
|
-
|
505
|
-
if (!include_super && !proto.hasOwnProperty(prop)) {
|
506
|
-
continue;
|
507
|
-
}
|
508
|
-
|
509
|
-
if (!include_super && value.$$donated) {
|
510
|
-
continue;
|
511
|
-
}
|
512
|
-
}
|
513
|
-
|
514
|
-
methods.push(prop.substr(1));
|
446
|
+
if (#{Opal.truthy?(include_super)}) {
|
447
|
+
return Opal.instance_methods(self);
|
448
|
+
} else {
|
449
|
+
return Opal.own_instance_methods(self);
|
515
450
|
}
|
516
|
-
|
517
|
-
return methods;
|
518
451
|
}
|
519
452
|
end
|
520
453
|
|
@@ -524,6 +457,9 @@ class Module
|
|
524
457
|
def extended(mod)
|
525
458
|
end
|
526
459
|
|
460
|
+
def extend_object(object)
|
461
|
+
end
|
462
|
+
|
527
463
|
def method_added(*)
|
528
464
|
end
|
529
465
|
|
@@ -535,7 +471,7 @@ class Module
|
|
535
471
|
|
536
472
|
def module_eval(*args, &block)
|
537
473
|
if block.nil? && `!!Opal.compile`
|
538
|
-
Kernel.raise ArgumentError,
|
474
|
+
Kernel.raise ArgumentError, 'wrong number of arguments (0 for 1..3)' unless (1..3).cover? args.size
|
539
475
|
|
540
476
|
string, file, _lineno = *args
|
541
477
|
default_eval_options = { file: (file || '(eval)'), eval: true }
|
@@ -548,9 +484,9 @@ class Module
|
|
548
484
|
})(self)
|
549
485
|
}
|
550
486
|
end
|
551
|
-
elsif args.
|
552
|
-
Kernel.raise ArgumentError, "wrong number of arguments (#{args.size} for 0)"
|
553
|
-
|
487
|
+
elsif args.any?
|
488
|
+
Kernel.raise ArgumentError, "wrong number of arguments (#{args.size} for 0)" \
|
489
|
+
"\n\n NOTE:If you want to enable passing a String argument please add \"require 'opal-parser'\" to your script\n"
|
554
490
|
end
|
555
491
|
|
556
492
|
%x{
|
@@ -587,7 +523,7 @@ class Module
|
|
587
523
|
|
588
524
|
def method_defined?(method)
|
589
525
|
%x{
|
590
|
-
var body = self.$$
|
526
|
+
var body = self.$$prototype['$' + method];
|
591
527
|
return (!!body) && !body.$$stub;
|
592
528
|
}
|
593
529
|
end
|
@@ -601,7 +537,7 @@ class Module
|
|
601
537
|
for (var i = 0, length = methods.length; i < length; i++) {
|
602
538
|
var meth = methods[i],
|
603
539
|
id = '$' + meth,
|
604
|
-
func = self.$$
|
540
|
+
func = self.$$prototype[id];
|
605
541
|
|
606
542
|
Opal.defs(self, id, func);
|
607
543
|
}
|
@@ -640,6 +576,41 @@ class Module
|
|
640
576
|
}
|
641
577
|
end
|
642
578
|
|
579
|
+
def prepend(*mods)
|
580
|
+
%x{
|
581
|
+
if (mods.length === 0) {
|
582
|
+
#{raise ArgumentError, 'wrong number of arguments (given 0, expected 1+)'}
|
583
|
+
}
|
584
|
+
|
585
|
+
for (var i = mods.length - 1; i >= 0; i--) {
|
586
|
+
var mod = mods[i];
|
587
|
+
|
588
|
+
if (!mod.$$is_module) {
|
589
|
+
#{raise TypeError, "wrong argument type #{`mod`.class} (expected Module)"};
|
590
|
+
}
|
591
|
+
|
592
|
+
#{`mod`.prepend_features self};
|
593
|
+
#{`mod`.prepended self};
|
594
|
+
}
|
595
|
+
}
|
596
|
+
|
597
|
+
self
|
598
|
+
end
|
599
|
+
|
600
|
+
def prepend_features(prepender)
|
601
|
+
%x{
|
602
|
+
if (!self.$$is_module) {
|
603
|
+
#{raise TypeError, "wrong argument type #{self.class} (expected Module)"};
|
604
|
+
}
|
605
|
+
|
606
|
+
Opal.prepend_features(self, prepender)
|
607
|
+
}
|
608
|
+
self
|
609
|
+
end
|
610
|
+
|
611
|
+
def prepended(mod)
|
612
|
+
end
|
613
|
+
|
643
614
|
def remove_const(name)
|
644
615
|
`Opal.const_remove(self, name)`
|
645
616
|
end
|