opal 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.codeclimate.yml +19 -0
- data/.gitmodules +1 -1
- data/.jshintrc +1 -2
- data/.rspec +1 -2
- data/.travis.yml +42 -20
- data/.yardopts +3 -1
- data/CHANGELOG.md +164 -1
- data/Gemfile +16 -9
- data/HACKING.md +4 -2
- data/README.md +11 -11
- data/Rakefile +1 -1
- data/appveyor.yml +29 -0
- data/benchmark/bm_constant_lookup_big.rb +799 -0
- data/benchmark/bm_constant_lookup_small.rb +59 -0
- data/benchmark/bm_module_definition_big.rb +400 -0
- data/benchmark/bm_module_definition_small.rb +30 -0
- data/benchmark-ips/bm_case.rb +33 -0
- data/benchmark-ips/bm_constants_lookup.rb +13 -0
- data/benchmark-ips/bm_is_number.rb +29 -0
- data/benchmark-ips/bm_symbol_to_proc.rb +19 -0
- data/bin +1 -0
- data/docs/compiled_ruby.md +16 -14
- data/docs/faq.md +3 -3
- data/docs/headless_chrome.md +105 -0
- data/docs/rspec.md +4 -20
- data/docs/unsupported_features.md +6 -4
- data/examples/rack/Gemfile +1 -0
- data/examples/rack/Gemfile.lock +11 -7
- data/examples/rack/app/application.rb +14 -3
- data/examples/rack/app/user.rb +2 -0
- data/examples/rack/config.ru +1 -1
- data/examples/rack/index.html.erb +1 -0
- data/examples/sinatra/Gemfile +1 -1
- data/examples/sinatra/Gemfile.lock +8 -11
- data/examples/sinatra/app/application.rb +2 -0
- data/{bin → exe}/opal +4 -2
- data/{bin → exe}/opal-repl +23 -1
- data/lib/opal/ast/builder.rb +13 -0
- data/lib/opal/ast/node.rb +30 -0
- data/lib/opal/builder.rb +82 -17
- data/lib/opal/builder_processors.rb +9 -7
- data/lib/opal/cli.rb +45 -59
- data/lib/opal/cli_options.rb +19 -12
- data/lib/opal/cli_runners/applescript.rb +3 -4
- data/lib/opal/cli_runners/chrome.js +135 -0
- data/lib/opal/cli_runners/chrome.rb +100 -0
- data/lib/opal/cli_runners/nashorn.rb +1 -1
- data/lib/opal/cli_runners/node_modules/.bin/chrome-remote-interface +1 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/LICENSE +18 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/README.md +843 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/bin/client.js +326 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/chrome-remote-interface.js +11 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/index.js +39 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/api.js +84 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/chrome.js +289 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/defaults.js +4 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/devtools.js +245 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/external-request.js +23 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/protocol.json +13303 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/websocket-wrapper.js +32 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/package.json +128 -0
- data/lib/opal/cli_runners/node_modules/chrome-remote-interface/webpack.config.js +55 -0
- data/lib/opal/cli_runners/node_modules/commander/Readme.md +195 -0
- data/lib/opal/cli_runners/node_modules/commander/index.js +851 -0
- data/lib/opal/cli_runners/node_modules/commander/package.json +92 -0
- data/{stdlib/nodejs/node_modules/js-yaml/node_modules/argparse → lib/opal/cli_runners/node_modules/ultron}/LICENSE +7 -6
- data/lib/opal/cli_runners/node_modules/ultron/index.js +138 -0
- data/lib/opal/cli_runners/node_modules/ultron/package.json +112 -0
- data/{stdlib/nodejs/node_modules/js-yaml → lib/opal/cli_runners/node_modules/ws}/LICENSE +6 -6
- data/lib/opal/cli_runners/node_modules/ws/README.md +259 -0
- data/lib/opal/cli_runners/node_modules/ws/SECURITY.md +33 -0
- data/lib/opal/cli_runners/node_modules/ws/index.js +15 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.fallback.js +56 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.js +15 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/ErrorCodes.js +28 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/EventTarget.js +158 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/Extensions.js +69 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/PerMessageDeflate.js +339 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/Receiver.js +520 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/Sender.js +438 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/Validation.fallback.js +9 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/Validation.js +17 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/WebSocket.js +705 -0
- data/lib/opal/cli_runners/node_modules/ws/lib/WebSocketServer.js +336 -0
- data/lib/opal/cli_runners/node_modules/ws/package.json +122 -0
- data/lib/opal/cli_runners/nodejs.rb +4 -2
- data/lib/opal/cli_runners/package.json +5 -0
- data/lib/opal/cli_runners/server.rb +1 -1
- data/lib/opal/cli_runners.rb +2 -1
- data/lib/opal/compiler.rb +136 -95
- data/lib/opal/config.rb +114 -36
- data/lib/opal/deprecations.rb +18 -0
- data/lib/opal/eof_content.rb +36 -0
- data/lib/opal/erb.rb +1 -0
- data/lib/opal/errors.rb +1 -0
- data/lib/opal/fragment.rb +1 -0
- data/lib/opal/nodes/arglist.rb +2 -1
- data/lib/opal/nodes/args/initialize_kwargs.rb +1 -0
- data/lib/opal/nodes/args/kwarg.rb +9 -7
- data/lib/opal/nodes/args/kwoptarg.rb +13 -8
- data/lib/opal/nodes/args/kwrestarg.rb +5 -5
- data/lib/opal/nodes/args/mlhsarg.rb +3 -2
- data/lib/opal/nodes/args/normarg.rb +6 -7
- data/lib/opal/nodes/args/optarg.rb +5 -7
- data/lib/opal/nodes/args/post_args.rb +6 -5
- data/lib/opal/nodes/args/post_kwargs.rb +1 -0
- data/lib/opal/nodes/args/restarg.rb +7 -7
- data/lib/opal/nodes/array.rb +1 -0
- data/lib/opal/nodes/base.rb +24 -3
- data/lib/opal/nodes/call.rb +168 -155
- data/lib/opal/nodes/call_special.rb +37 -214
- data/lib/opal/nodes/case.rb +36 -22
- data/lib/opal/nodes/class.rb +4 -3
- data/lib/opal/nodes/constants.rb +28 -48
- data/lib/opal/nodes/csend.rb +25 -0
- data/lib/opal/nodes/def.rb +57 -17
- data/lib/opal/nodes/defined.rb +170 -60
- data/lib/opal/nodes/definitions.rb +42 -133
- data/lib/opal/nodes/defs.rb +29 -0
- data/lib/opal/nodes/hash.rb +12 -35
- data/lib/opal/nodes/helpers.rb +31 -62
- data/lib/opal/nodes/if.rb +21 -32
- data/lib/opal/nodes/inline_args.rb +12 -13
- data/lib/opal/nodes/iter.rb +61 -36
- data/lib/opal/nodes/literal.rb +206 -114
- data/lib/opal/nodes/logic.rb +39 -57
- data/lib/opal/nodes/masgn.rb +20 -18
- data/lib/opal/nodes/module.rb +10 -11
- data/lib/opal/nodes/node_with_args.rb +15 -18
- data/lib/opal/nodes/rescue.rb +37 -70
- data/lib/opal/nodes/runtime_helpers.rb +8 -3
- data/lib/opal/nodes/scope.rb +10 -5
- data/lib/opal/nodes/singleton_class.rb +4 -3
- data/lib/opal/nodes/super.rb +112 -88
- data/lib/opal/nodes/top.rb +7 -2
- data/lib/opal/nodes/variables.rb +57 -35
- data/lib/opal/nodes/while.rb +11 -1
- data/lib/opal/nodes/yield.rb +1 -17
- data/lib/opal/nodes.rb +3 -1
- data/lib/opal/parser.rb +29 -766
- data/lib/opal/path_reader.rb +22 -5
- data/lib/opal/paths.rb +10 -4
- data/lib/opal/regexp_anchors.rb +1 -0
- data/lib/opal/rewriter.rb +64 -0
- data/lib/opal/rewriters/base.rb +63 -0
- data/lib/opal/rewriters/binary_operator_assignment.rb +141 -0
- data/lib/opal/rewriters/block_to_iter.rb +17 -0
- data/lib/opal/rewriters/break_finder.rb +34 -0
- data/lib/opal/rewriters/dot_js_syntax.rb +60 -0
- data/lib/opal/rewriters/explicit_writer_return.rb +58 -0
- data/lib/opal/rewriters/for_rewriter.rb +93 -0
- data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +58 -0
- data/lib/opal/rewriters/js_reserved_words.rb +108 -0
- data/lib/opal/rewriters/logical_operator_assignment.rb +154 -0
- data/lib/opal/rewriters/opal_engine_check.rb +42 -0
- data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +67 -0
- data/lib/opal/server.rb +4 -0
- data/lib/opal/simple_server.rb +101 -0
- data/lib/opal/source_map.rb +1 -1
- data/lib/opal/util.rb +6 -6
- data/lib/opal/version.rb +2 -1
- data/lib/opal.rb +7 -1
- data/lib/tilt/opal.rb +1 -0
- data/opal/README.md +1 -1
- data/opal/corelib/array.rb +184 -107
- data/opal/corelib/basic_object.rb +6 -6
- data/opal/corelib/boolean.rb +11 -3
- data/opal/corelib/class.rb +14 -11
- data/opal/corelib/comparable.rb +16 -0
- data/opal/corelib/complex.rb +5 -1
- data/opal/corelib/constants.rb +3 -3
- data/opal/corelib/enumerable.rb +176 -11
- data/opal/corelib/error.rb +35 -17
- data/opal/corelib/file.rb +114 -176
- data/opal/corelib/hash.rb +226 -13
- data/opal/corelib/helpers.rb +12 -15
- data/opal/corelib/io.rb +3 -2
- data/opal/corelib/kernel.rb +68 -32
- data/opal/corelib/marshal/read_buffer.rb +288 -150
- data/opal/corelib/marshal/write_buffer.rb +27 -2
- data/opal/corelib/method.rb +33 -13
- data/opal/corelib/module.rb +134 -82
- data/opal/corelib/nil.rb +11 -3
- data/opal/corelib/number.rb +220 -34
- data/opal/corelib/numeric.rb +3 -11
- data/opal/corelib/process.rb +44 -4
- data/opal/corelib/random/seedrandom.js.rb +15 -0
- data/opal/corelib/random.rb +117 -0
- data/opal/corelib/range.rb +147 -24
- data/opal/corelib/regexp.rb +82 -13
- data/opal/corelib/runtime.js +623 -397
- data/opal/corelib/string/encoding.rb +67 -31
- data/opal/corelib/string/inheritance.rb +1 -1
- data/opal/corelib/string.rb +40 -9
- data/opal/corelib/struct.rb +18 -3
- data/opal/corelib/time.rb +3 -3
- data/opal/corelib/variables.rb +1 -1
- data/opal/opal.rb +1 -0
- data/opal.gemspec +32 -29
- data/stdlib/base64.rb +4 -2
- data/stdlib/bigdecimal/bignumber.js.rb +1 -1
- data/stdlib/buffer/array.rb +4 -2
- data/stdlib/date.rb +64 -31
- data/stdlib/headless_chrome.rb +11 -0
- data/stdlib/json.rb +16 -4
- data/stdlib/nashorn/file.rb +15 -0
- data/stdlib/native.rb +21 -12
- data/stdlib/nodejs/dir.rb +1 -1
- data/stdlib/nodejs/file.rb +77 -23
- data/stdlib/nodejs/io.rb +30 -1
- data/stdlib/nodejs/{node_modules/js-yaml/dist/js-yaml.js → js-yaml-3-6-1.js} +815 -626
- data/stdlib/nodejs/kernel.rb +3 -1
- data/stdlib/nodejs/package.json +0 -1
- data/stdlib/nodejs/stacktrace.rb +179 -0
- data/stdlib/nodejs/yaml.rb +2 -1
- data/stdlib/opal/platform.rb +6 -14
- data/stdlib/opal-builder.rb +1 -0
- data/stdlib/opal-platform.rb +15 -0
- data/stdlib/pathname.rb +1 -1
- data/stdlib/rbconfig.rb +1 -1
- data/stdlib/securerandom.rb +1 -1
- data/stdlib/strscan.rb +15 -1
- data/stdlib/yaml.rb +1 -1
- data/tasks/benchmarking.rake +9 -0
- data/tasks/building.rake +24 -20
- data/tasks/linting.rake +24 -13
- data/tasks/testing/mspec_special_calls.rb +44 -15
- data/tasks/testing/opal_rspec_smoketest.Gemfile +6 -0
- data/tasks/testing.rake +351 -202
- metadata +135 -915
- data/lib/opal/cli_runners/phantom.js +0 -70
- data/lib/opal/cli_runners/phantomjs.rb +0 -28
- data/lib/opal/hike_path_finder.rb +0 -18
- data/lib/opal/nodes/for.rb +0 -48
- data/lib/opal/parser/grammar.rb +0 -6157
- data/lib/opal/parser/grammar.y +0 -2011
- data/lib/opal/parser/keywords.rb +0 -66
- data/lib/opal/parser/lexer.rb +0 -1352
- data/lib/opal/parser/parser_scope.rb +0 -28
- data/lib/opal/parser/sexp.rb +0 -90
- data/lib/opal/sprockets/environment.rb +0 -23
- data/lib/opal/sprockets/erb.rb +0 -23
- data/lib/opal/sprockets/path_reader.rb +0 -36
- data/lib/opal/sprockets/processor.rb +0 -145
- data/lib/opal/sprockets/server.rb +0 -133
- data/lib/opal/sprockets/source_map_header_patch.rb +0 -41
- data/lib/opal/sprockets/source_map_server.rb +0 -115
- data/lib/opal/sprockets.rb +0 -91
- data/spec/README.md +0 -10
- data/spec/filters/bugs/array.rb +0 -12
- data/spec/filters/bugs/basicobject.rb +0 -16
- data/spec/filters/bugs/bigdecimal.rb +0 -160
- data/spec/filters/bugs/class.rb +0 -10
- data/spec/filters/bugs/compiler_opal.rb +0 -5
- data/spec/filters/bugs/complex.rb +0 -3
- data/spec/filters/bugs/date.rb +0 -94
- data/spec/filters/bugs/enumerable.rb +0 -50
- data/spec/filters/bugs/enumerator.rb +0 -42
- data/spec/filters/bugs/exception.rb +0 -58
- data/spec/filters/bugs/float.rb +0 -33
- data/spec/filters/bugs/hash.rb +0 -11
- data/spec/filters/bugs/inheritance.rb +0 -5
- data/spec/filters/bugs/integer.rb +0 -28
- data/spec/filters/bugs/kernel.rb +0 -297
- data/spec/filters/bugs/language.rb +0 -275
- data/spec/filters/bugs/language_opal.rb +0 -88
- data/spec/filters/bugs/marshal.rb +0 -43
- data/spec/filters/bugs/method.rb +0 -84
- data/spec/filters/bugs/module.rb +0 -196
- data/spec/filters/bugs/numeric.rb +0 -127
- data/spec/filters/bugs/pathname.rb +0 -5
- data/spec/filters/bugs/proc.rb +0 -36
- data/spec/filters/bugs/range.rb +0 -144
- data/spec/filters/bugs/rational.rb +0 -4
- data/spec/filters/bugs/regexp.rb +0 -196
- data/spec/filters/bugs/set.rb +0 -42
- data/spec/filters/bugs/singleton.rb +0 -6
- data/spec/filters/bugs/string.rb +0 -101
- data/spec/filters/bugs/stringscanner.rb +0 -79
- data/spec/filters/bugs/struct.rb +0 -4
- data/spec/filters/bugs/time.rb +0 -29
- data/spec/filters/bugs/unboundmethod.rb +0 -27
- data/spec/filters/unsupported/array.rb +0 -163
- data/spec/filters/unsupported/basicobject.rb +0 -14
- data/spec/filters/unsupported/bignum.rb +0 -52
- data/spec/filters/unsupported/class.rb +0 -4
- data/spec/filters/unsupported/delegator.rb +0 -5
- data/spec/filters/unsupported/enumerable.rb +0 -11
- data/spec/filters/unsupported/enumerator.rb +0 -13
- data/spec/filters/unsupported/fixnum.rb +0 -14
- data/spec/filters/unsupported/float.rb +0 -43
- data/spec/filters/unsupported/freeze.rb +0 -53
- data/spec/filters/unsupported/hash.rb +0 -51
- data/spec/filters/unsupported/integer.rb +0 -3
- data/spec/filters/unsupported/kernel.rb +0 -31
- data/spec/filters/unsupported/language.rb +0 -17
- data/spec/filters/unsupported/marshal.rb +0 -46
- data/spec/filters/unsupported/matchdata.rb +0 -30
- data/spec/filters/unsupported/math.rb +0 -3
- data/spec/filters/unsupported/module.rb +0 -8
- data/spec/filters/unsupported/pathname.rb +0 -3
- data/spec/filters/unsupported/privacy.rb +0 -147
- data/spec/filters/unsupported/proc.rb +0 -3
- data/spec/filters/unsupported/regexp.rb +0 -59
- data/spec/filters/unsupported/set.rb +0 -4
- data/spec/filters/unsupported/singleton.rb +0 -6
- data/spec/filters/unsupported/string.rb +0 -537
- data/spec/filters/unsupported/struct.rb +0 -6
- data/spec/filters/unsupported/symbol.rb +0 -19
- data/spec/filters/unsupported/taint.rb +0 -15
- data/spec/filters/unsupported/thread.rb +0 -7
- data/spec/filters/unsupported/time.rb +0 -202
- data/spec/lib/builder_processors_spec.rb +0 -27
- data/spec/lib/builder_spec.rb +0 -72
- data/spec/lib/cli_runners/phantomjs_spec.rb +0 -39
- data/spec/lib/cli_spec.rb +0 -211
- data/spec/lib/compiler/call_spec.rb +0 -700
- data/spec/lib/compiler/pre_processed_conditionals_spec.rb +0 -87
- data/spec/lib/compiler_spec.rb +0 -285
- data/spec/lib/config_spec.rb +0 -13
- data/spec/lib/dependency_resolver_spec.rb +0 -40
- data/spec/lib/fixtures/complex_sprockets.js.rb.erb +0 -4
- data/spec/lib/fixtures/file_with_directives.js +0 -2
- data/spec/lib/fixtures/jst_file.js.jst +0 -1
- data/spec/lib/fixtures/no_requires.rb +0 -1
- data/spec/lib/fixtures/opal_file.rb +0 -2
- data/spec/lib/fixtures/require_tree_test.rb +0 -3
- data/spec/lib/fixtures/required_file.js +0 -1
- data/spec/lib/fixtures/required_tree_test/required_file1.rb +0 -1
- data/spec/lib/fixtures/required_tree_test/required_file2.rb +0 -1
- data/spec/lib/fixtures/requires.rb +0 -7
- data/spec/lib/fixtures/source_map/subfolder/other_file.rb +0 -1
- data/spec/lib/fixtures/source_map.rb +0 -1
- data/spec/lib/fixtures/sprockets_file.js.rb +0 -3
- data/spec/lib/fixtures/sprockets_require_tree_test.rb +0 -3
- data/spec/lib/hike_path_finder_spec.rb +0 -23
- data/spec/lib/lexer_spec.rb +0 -110
- data/spec/lib/parser/alias_spec.rb +0 -26
- data/spec/lib/parser/and_spec.rb +0 -13
- data/spec/lib/parser/aref_spec.rb +0 -10
- data/spec/lib/parser/attrasgn_spec.rb +0 -28
- data/spec/lib/parser/begin_spec.rb +0 -42
- data/spec/lib/parser/block_spec.rb +0 -12
- data/spec/lib/parser/break_spec.rb +0 -17
- data/spec/lib/parser/call_spec.rb +0 -201
- data/spec/lib/parser/class_spec.rb +0 -35
- data/spec/lib/parser/comments_spec.rb +0 -11
- data/spec/lib/parser/def_spec.rb +0 -109
- data/spec/lib/parser/if_spec.rb +0 -26
- data/spec/lib/parser/iter_spec.rb +0 -59
- data/spec/lib/parser/lambda_spec.rb +0 -219
- data/spec/lib/parser/literal_spec.rb +0 -118
- data/spec/lib/parser/masgn_spec.rb +0 -37
- data/spec/lib/parser/module_spec.rb +0 -27
- data/spec/lib/parser/not_spec.rb +0 -21
- data/spec/lib/parser/op_asgn1_spec.rb +0 -23
- data/spec/lib/parser/op_asgn2_spec.rb +0 -23
- data/spec/lib/parser/op_asgn_spec.rb +0 -17
- data/spec/lib/parser/or_spec.rb +0 -13
- data/spec/lib/parser/return_spec.rb +0 -22
- data/spec/lib/parser/sclass_spec.rb +0 -21
- data/spec/lib/parser/string_spec.rb +0 -286
- data/spec/lib/parser/super_spec.rb +0 -20
- data/spec/lib/parser/unary_spec.rb +0 -52
- data/spec/lib/parser/undef_spec.rb +0 -19
- data/spec/lib/parser/unless_spec.rb +0 -13
- data/spec/lib/parser/variables_spec.rb +0 -116
- data/spec/lib/parser/while_spec.rb +0 -15
- data/spec/lib/parser/yield_spec.rb +0 -20
- data/spec/lib/path_reader_spec.rb +0 -36
- data/spec/lib/paths_spec.rb +0 -18
- data/spec/lib/shared/path_finder_shared.rb +0 -19
- data/spec/lib/shared/path_reader_shared.rb +0 -31
- data/spec/lib/spec_helper.rb +0 -16
- data/spec/lib/sprockets/erb_spec.rb +0 -38
- data/spec/lib/sprockets/path_reader_spec.rb +0 -41
- data/spec/lib/sprockets/processor_spec.rb +0 -79
- data/spec/lib/sprockets/server_spec.rb +0 -102
- data/spec/lib/sprockets_spec.rb +0 -32
- data/spec/lib/tilt/opal_spec.rb +0 -37
- data/spec/mspec-opal/formatters.rb +0 -188
- data/spec/mspec-opal/runner.rb +0 -193
- data/spec/opal/compiler/irb_spec.rb +0 -44
- data/spec/opal/core/arity_spec.rb +0 -142
- data/spec/opal/core/array/intersection_spec.rb +0 -38
- data/spec/opal/core/array/minus_spec.rb +0 -38
- data/spec/opal/core/array/select_spec.rb +0 -14
- data/spec/opal/core/array/set_range_to_array_spec.rb +0 -7
- data/spec/opal/core/array/union_spec.rb +0 -38
- data/spec/opal/core/array/uniq_spec.rb +0 -49
- data/spec/opal/core/date_spec.rb +0 -177
- data/spec/opal/core/enumerable/all_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/any_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/collect_break_spec.rb +0 -13
- data/spec/opal/core/enumerable/count_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/detect_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/drop_while_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/each_slice_break.rb +0 -6
- data/spec/opal/core/enumerable/each_with_index_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/each_with_object_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/find_all_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/find_index_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/grep_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/max_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/max_by_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/min_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/min_by_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/none_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/one_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/reduce_break_spec.rb +0 -5
- data/spec/opal/core/enumerable/take_while_break_spec.rb +0 -5
- data/spec/opal/core/enumerator/with_index_spec.rb +0 -6
- data/spec/opal/core/exception_spec.rb +0 -20
- data/spec/opal/core/fixtures/class.rb +0 -124
- data/spec/opal/core/fixtures/class_variables.rb +0 -0
- data/spec/opal/core/fixtures/constants.rb +0 -33
- data/spec/opal/core/fixtures/require_tree_files/file 1.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/file 2.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/file 3.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/file 4.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/file 5.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +0 -1
- data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +0 -3
- data/spec/opal/core/hash/has_value_spec.rb +0 -13
- data/spec/opal/core/hash/internals_spec.rb +0 -332
- data/spec/opal/core/helpers_spec.rb +0 -14
- data/spec/opal/core/kernel/Array_spec.rb +0 -10
- data/spec/opal/core/kernel/at_exit_spec.rb +0 -70
- data/spec/opal/core/kernel/block_given_spec.rb +0 -30
- data/spec/opal/core/kernel/class_spec.rb +0 -6
- data/spec/opal/core/kernel/define_singleton_method_spec.rb +0 -21
- data/spec/opal/core/kernel/equal_value_spec.rb +0 -12
- data/spec/opal/core/kernel/extend_spec.rb +0 -21
- data/spec/opal/core/kernel/format_spec.rb +0 -122
- data/spec/opal/core/kernel/freeze_spec.rb +0 -15
- data/spec/opal/core/kernel/instance_eval_spec.rb +0 -28
- data/spec/opal/core/kernel/instance_variable_defined_spec.rb +0 -15
- data/spec/opal/core/kernel/instance_variable_get_spec.rb +0 -14
- data/spec/opal/core/kernel/instance_variable_set_spec.rb +0 -10
- data/spec/opal/core/kernel/instance_variables_spec.rb +0 -110
- data/spec/opal/core/kernel/loop_spec.rb +0 -23
- data/spec/opal/core/kernel/match_spec.rb +0 -5
- data/spec/opal/core/kernel/method_spec.rb +0 -31
- data/spec/opal/core/kernel/methods_spec.rb +0 -25
- data/spec/opal/core/kernel/nil_spec.rb +0 -7
- data/spec/opal/core/kernel/p_spec.rb +0 -15
- data/spec/opal/core/kernel/printf_spec.rb +0 -11
- data/spec/opal/core/kernel/proc_spec.rb +0 -13
- data/spec/opal/core/kernel/raise_spec.rb +0 -13
- data/spec/opal/core/kernel/rand_spec.rb +0 -23
- data/spec/opal/core/kernel/require_tree_spec.rb +0 -18
- data/spec/opal/core/kernel/respond_to_spec.rb +0 -41
- data/spec/opal/core/kernel/send_spec.rb +0 -56
- data/spec/opal/core/kernel/sprintf_spec.rb +0 -5
- data/spec/opal/core/language/arguments/mlhs_arg_spec.rb +0 -19
- data/spec/opal/core/language/block_spec.rb +0 -538
- data/spec/opal/core/language/class_spec.rb +0 -55
- data/spec/opal/core/language/equal_spec.rb +0 -8
- data/spec/opal/core/language/fixtures/array.rb +0 -11
- data/spec/opal/core/language/fixtures/block.rb +0 -57
- data/spec/opal/core/language/fixtures/break.rb +0 -240
- data/spec/opal/core/language/fixtures/ensure.rb +0 -72
- data/spec/opal/core/language/fixtures/literal_lambda.rb +0 -7
- data/spec/opal/core/language/fixtures/metaclass.rb +0 -33
- data/spec/opal/core/language/fixtures/module.rb +0 -24
- data/spec/opal/core/language/fixtures/next.rb +0 -128
- data/spec/opal/core/language/fixtures/return.rb +0 -118
- data/spec/opal/core/language/fixtures/send.rb +0 -111
- data/spec/opal/core/language/fixtures/send_1.9.rb +0 -22
- data/spec/opal/core/language/fixtures/super.rb +0 -308
- data/spec/opal/core/language/fixtures/variables.rb +0 -58
- data/spec/opal/core/language/fixtures/yield.rb +0 -28
- data/spec/opal/core/language/heredoc_spec.rb +0 -42
- data/spec/opal/core/language/keyword_arguments_spec.rb +0 -11
- data/spec/opal/core/language/predefined_spec.rb +0 -138
- data/spec/opal/core/language/proc_spec.rb +0 -263
- data/spec/opal/core/language/regexp_spec.rb +0 -20
- data/spec/opal/core/language/rescue_spec.rb +0 -18
- data/spec/opal/core/language/send_spec.rb +0 -230
- data/spec/opal/core/language/string_spec.rb +0 -44
- data/spec/opal/core/language/ternary_operator_spec.rb +0 -20
- data/spec/opal/core/language/variables_spec.rb +0 -1366
- data/spec/opal/core/language/versions/array_1.9.rb +0 -39
- data/spec/opal/core/language/versions/block_1.9.rb +0 -0
- data/spec/opal/core/language/versions/break_1.9.rb +0 -0
- data/spec/opal/core/language/versions/case_1.9.rb +0 -20
- data/spec/opal/core/language/versions/def_2_0_spec.rb +0 -62
- data/spec/opal/core/language/versions/hash_1_9_spec.rb +0 -23
- data/spec/opal/core/language/versions/literal_lambda_1.9.rb +0 -143
- data/spec/opal/core/language/versions/not_1.9.rb +0 -22
- data/spec/opal/core/language/versions/send_1.9.rb +0 -241
- data/spec/opal/core/language/versions/symbol_1.9.rb +0 -15
- data/spec/opal/core/language/versions/variables_1.9.rb +0 -8
- data/spec/opal/core/language_spec.rb +0 -45
- data/spec/opal/core/marshal/dump_spec.rb +0 -53
- data/spec/opal/core/marshal/load_spec.rb +0 -7
- data/spec/opal/core/method/to_proc_spec.rb +0 -28
- data/spec/opal/core/module/alias_method_spec.rb +0 -28
- data/spec/opal/core/module/ancestors_spec.rb +0 -11
- data/spec/opal/core/module/append_features_spec.rb +0 -14
- data/spec/opal/core/module/attr_accessor_spec.rb +0 -26
- data/spec/opal/core/module/const_defined_spec.rb +0 -84
- data/spec/opal/core/module/const_get_spec.rb +0 -85
- data/spec/opal/core/module/const_missing_spec.rb +0 -17
- data/spec/opal/core/module/const_set_spec.rb +0 -64
- data/spec/opal/core/module/constants_spec.rb +0 -49
- data/spec/opal/core/module/fixtures/classes.rb +0 -444
- data/spec/opal/core/module/method_defined_spec.rb +0 -48
- data/spec/opal/core/module/method_lookup_spec.rb +0 -13
- data/spec/opal/core/module/module_function_spec.rb +0 -25
- data/spec/opal/core/module/name_spec.rb +0 -41
- data/spec/opal/core/module/public_method_defined_spec.rb +0 -18
- data/spec/opal/core/module/remove_const_spec.rb +0 -22
- data/spec/opal/core/module/undef_method_spec.rb +0 -66
- data/spec/opal/core/numeric/bit_and_spec.rb +0 -7
- data/spec/opal/core/numeric/bit_or_spec.rb +0 -8
- data/spec/opal/core/numeric/bit_xor_spec.rb +0 -6
- data/spec/opal/core/numeric/ceil_spec.rb +0 -8
- data/spec/opal/core/numeric/chr_spec.rb +0 -8
- data/spec/opal/core/numeric/comparison_spec.rb +0 -24
- data/spec/opal/core/numeric/complement_spec.rb +0 -8
- data/spec/opal/core/numeric/divide_spec.rb +0 -10
- data/spec/opal/core/numeric/eql_spec.rb +0 -9
- data/spec/opal/core/numeric/exponent_spec.rb +0 -33
- data/spec/opal/core/numeric/floor_spec.rb +0 -8
- data/spec/opal/core/numeric/gt_spec.rb +0 -11
- data/spec/opal/core/numeric/gte_spec.rb +0 -12
- data/spec/opal/core/numeric/integer_spec.rb +0 -9
- data/spec/opal/core/numeric/left_shift_spec.rb +0 -21
- data/spec/opal/core/numeric/lt_spec.rb +0 -11
- data/spec/opal/core/numeric/lte_spec.rb +0 -12
- data/spec/opal/core/numeric/minus_spec.rb +0 -8
- data/spec/opal/core/numeric/modulo_spec.rb +0 -19
- data/spec/opal/core/numeric/multiply_spec.rb +0 -9
- data/spec/opal/core/numeric/next_spec.rb +0 -9
- data/spec/opal/core/numeric/ord_spec.rb +0 -9
- data/spec/opal/core/numeric/plus_spec.rb +0 -8
- data/spec/opal/core/numeric/pred_spec.rb +0 -7
- data/spec/opal/core/numeric/right_shift_spec.rb +0 -25
- data/spec/opal/core/numeric/step_spec.rb +0 -11
- data/spec/opal/core/numeric/succ_spec.rb +0 -9
- data/spec/opal/core/numeric/times_spec.rb +0 -36
- data/spec/opal/core/numeric/to_f_spec.rb +0 -7
- data/spec/opal/core/numeric/to_i_spec.rb +0 -7
- data/spec/opal/core/numeric/to_json_spec.rb +0 -8
- data/spec/opal/core/numeric/to_s_spec.rb +0 -26
- data/spec/opal/core/numeric/uminus_spec.rb +0 -9
- data/spec/opal/core/numeric/upto_spec.rb +0 -19
- data/spec/opal/core/numeric/zero_spec.rb +0 -7
- data/spec/opal/core/object_id_spec.rb +0 -56
- data/spec/opal/core/proc/call_spec.rb +0 -21
- data/spec/opal/core/proc/element_reference_spec.rb +0 -21
- data/spec/opal/core/proc/proc_tricks_spec.rb +0 -7
- data/spec/opal/core/runtime/begin_spec.rb +0 -39
- data/spec/opal/core/runtime/block_send_spec.rb +0 -28
- data/spec/opal/core/runtime/block_spec.rb +0 -23
- data/spec/opal/core/runtime/bridged_classes_spec.rb +0 -123
- data/spec/opal/core/runtime/constants_spec.rb +0 -13
- data/spec/opal/core/runtime/donate_spec.rb +0 -53
- data/spec/opal/core/runtime/eval_spec.rb +0 -5
- data/spec/opal/core/runtime/main_methods_spec.rb +0 -27
- data/spec/opal/core/runtime/method_missing_spec.rb +0 -68
- data/spec/opal/core/runtime/method_spec.rb +0 -31
- data/spec/opal/core/runtime/operator_call_spec.rb +0 -13
- data/spec/opal/core/runtime/paren_spec.rb +0 -14
- data/spec/opal/core/runtime/rescue_spec.rb +0 -71
- data/spec/opal/core/runtime/return_spec.rb +0 -38
- data/spec/opal/core/runtime/send_spec.rb +0 -34
- data/spec/opal/core/runtime/singleton_class_spec.rb +0 -13
- data/spec/opal/core/runtime/super_spec.rb +0 -223
- data/spec/opal/core/runtime/truthy_spec.rb +0 -63
- data/spec/opal/core/runtime/variables_spec.rb +0 -20
- data/spec/opal/core/runtime_spec.rb +0 -58
- data/spec/opal/core/source_map_spec.rb +0 -49
- data/spec/opal/core/string_spec.rb +0 -32
- data/spec/opal/javascript_api_spec.rb +0 -16
- data/spec/opal/stdlib/erb/erb_spec.rb +0 -30
- data/spec/opal/stdlib/erb/inline_block.opalerb +0 -3
- data/spec/opal/stdlib/erb/quoted.opalerb +0 -1
- data/spec/opal/stdlib/erb/simple.opalerb +0 -1
- data/spec/opal/stdlib/js_spec.rb +0 -66
- data/spec/opal/stdlib/json/ext_spec.rb +0 -48
- data/spec/opal/stdlib/json/parse_spec.rb +0 -33
- data/spec/opal/stdlib/native/alias_native_spec.rb +0 -27
- data/spec/opal/stdlib/native/array_spec.rb +0 -11
- data/spec/opal/stdlib/native/each_spec.rb +0 -13
- data/spec/opal/stdlib/native/element_reference_spec.rb +0 -16
- data/spec/opal/stdlib/native/exposure_spec.rb +0 -33
- data/spec/opal/stdlib/native/ext_spec.rb +0 -19
- data/spec/opal/stdlib/native/hash_spec.rb +0 -51
- data/spec/opal/stdlib/native/initialize_spec.rb +0 -17
- data/spec/opal/stdlib/native/method_missing_spec.rb +0 -51
- data/spec/opal/stdlib/native/native_alias_spec.rb +0 -19
- data/spec/opal/stdlib/native/native_class_spec.rb +0 -18
- data/spec/opal/stdlib/native/native_module_spec.rb +0 -13
- data/spec/opal/stdlib/native/native_reader_spec.rb +0 -22
- data/spec/opal/stdlib/native/native_writer_spec.rb +0 -30
- data/spec/opal/stdlib/native/new_spec.rb +0 -92
- data/spec/opal/stdlib/native/struct_spec.rb +0 -12
- data/spec/opal/stdlib/promise/always_spec.rb +0 -49
- data/spec/opal/stdlib/promise/error_spec.rb +0 -15
- data/spec/opal/stdlib/promise/rescue_spec.rb +0 -53
- data/spec/opal/stdlib/promise/then_spec.rb +0 -79
- data/spec/opal/stdlib/promise/trace_spec.rb +0 -51
- data/spec/opal/stdlib/promise/value_spec.rb +0 -15
- data/spec/opal/stdlib/promise/when_spec.rb +0 -34
- data/spec/opal/stdlib/source_map_spec.rb +0 -8
- data/spec/opal/stdlib/strscan/scan_spec.rb +0 -11
- data/spec/opal/stdlib/template/paths_spec.rb +0 -10
- data/spec/opal/stdlib/thread/mutex_spec.rb +0 -40
- data/spec/opal/stdlib/thread/thread_queue_spec.rb +0 -32
- data/spec/opal/stdlib/thread/thread_spec.rb +0 -60
- data/spec/ruby_specs +0 -121
- data/spec/spec_helper.rb +0 -26
- data/spec/support/match_helpers.rb +0 -57
- data/spec/support/mspec_rspec_adapter.rb +0 -33
- data/spec/support/parser_helpers.rb +0 -37
- data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +0 -277
- data/stdlib/nodejs/node_modules/js-yaml/README.md +0 -288
- data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +0 -140
- data/stdlib/nodejs/node_modules/js-yaml/bower.json +0 -23
- data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +0 -3
- data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +0 -102
- data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +0 -18
- data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +0 -31
- data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +0 -22
- data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +0 -18
- data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +0 -197
- data/stdlib/nodejs/node_modules/js-yaml/index.js +0 -7
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +0 -62
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +0 -554
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +0 -25
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +0 -1581
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +0 -78
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +0 -18
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +0 -25
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +0 -28
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +0 -17
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +0 -25
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +0 -103
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +0 -133
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +0 -37
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +0 -110
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +0 -183
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +0 -85
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +0 -84
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +0 -27
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +0 -8
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +0 -12
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +0 -36
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +0 -56
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +0 -61
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +0 -8
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +0 -33
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +0 -8
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +0 -98
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +0 -61
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +0 -39
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +0 -115
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +0 -239
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +0 -36
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +0 -22
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +0 -59
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +0 -13
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +0 -33
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +0 -28
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +0 -23
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +0 -49
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +0 -35
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +0 -270
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +0 -1
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +0 -47
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +0 -55
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +0 -40
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +0 -48
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +0 -43
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +0 -27
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +0 -26
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +0 -50
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +0 -148
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +0 -50
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +0 -146
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +0 -481
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +0 -14
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +0 -50
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +0 -54
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +0 -75
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +0 -1168
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +0 -18
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +0 -88
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +0 -798
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +0 -77
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +0 -23
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +0 -22
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +0 -69
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +0 -6
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +0 -1415
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +0 -2
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +0 -8
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +0 -825
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +0 -33
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +0 -11
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +0 -10
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +0 -26
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +0 -673
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +0 -107
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +0 -62
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +0 -73
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +0 -117
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +0 -177
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +0 -3908
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +0 -69
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +0 -239
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +0 -422
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +0 -66
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +0 -387
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +0 -20238
- data/stdlib/nodejs/node_modules/js-yaml/package.json +0 -83
- data/stdlib/phantomjs.rb +0 -17
- data/tasks/testing/sprockets-phantomjs.js +0 -54
- data/test/nodejs/test_dir.rb +0 -17
- data/test/nodejs/test_file.rb +0 -30
- data/test/opal/test_keyword.rb +0 -590
- data/test/opal/unsupported_and_bugs.rb +0 -30
- /data/{CODE_OF_CONDUCT.md → CONDUCT.md} +0 -0
- /data/{bin → exe}/opal-build +0 -0
- /data/{bin → exe}/opal-mspec +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Why .$$is_number is better than isNaN:
|
|
2
|
+
#
|
|
3
|
+
#
|
|
4
|
+
# Warming up --------------------------------------
|
|
5
|
+
# .$$is_number 106.722k i/100ms
|
|
6
|
+
# isNaN() 105.040k i/100ms
|
|
7
|
+
# obj.$$is_number 106.864k i/100ms
|
|
8
|
+
# isNaN(obj) 89.287k i/100ms
|
|
9
|
+
# Calculating -------------------------------------
|
|
10
|
+
# .$$is_number 12.052M (± 6.6%) i/s - 59.978M in 5.002614s
|
|
11
|
+
# isNaN() 12.338M (± 5.4%) i/s - 61.448M in 4.997957s
|
|
12
|
+
# obj.$$is_number 12.514M (± 6.8%) i/s - 62.302M in 5.005715s
|
|
13
|
+
# isNaN(obj) 4.211M (± 5.9%) i/s - 20.982M in 5.001643s
|
|
14
|
+
#
|
|
15
|
+
# Comparison:
|
|
16
|
+
# obj.$$is_number: 12513664.2 i/s
|
|
17
|
+
# isNaN(): 12338259.3 i/s - same-ish: difference falls within error
|
|
18
|
+
# .$$is_number: 12051756.8 i/s - same-ish: difference falls within error
|
|
19
|
+
# isNaN(obj): 4211175.7 i/s - 2.97x slower
|
|
20
|
+
#
|
|
21
|
+
Benchmark.ips do |x|
|
|
22
|
+
number = 123
|
|
23
|
+
number_obj = 123.itself
|
|
24
|
+
x.report(".$$is_number") { number.JS['$$is_number'] }
|
|
25
|
+
x.report("isNaN()") { `!isNaN(number)` }
|
|
26
|
+
x.report("obj.$$is_number") { number_obj.JS['$$is_number'] }
|
|
27
|
+
x.report("isNaN(obj)") { `!isNaN(number_obj)` }
|
|
28
|
+
x.compare!
|
|
29
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# https://github.com/opal/opal/issues/1659#issuecomment-298222232
|
|
2
|
+
|
|
3
|
+
Benchmark.ips do |x|
|
|
4
|
+
a = []
|
|
5
|
+
|
|
6
|
+
50.times do |i|
|
|
7
|
+
a << %(#{i}\n)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
x.report('map block') do
|
|
11
|
+
a.map {|it| it.chomp }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
x.report('map symbol') do
|
|
15
|
+
a.map(&:chomp)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
x.compare!
|
|
19
|
+
end
|
data/docs/compiled_ruby.md
CHANGED
|
@@ -38,7 +38,7 @@ and `FalseClass` classes from ruby.
|
|
|
38
38
|
```ruby
|
|
39
39
|
"hello world!" # => "hello world!"
|
|
40
40
|
:foo # => "foo"
|
|
41
|
-
<<-EOS # => "
|
|
41
|
+
<<-EOS # => "Hello there.\n"
|
|
42
42
|
Hello there.
|
|
43
43
|
EOS
|
|
44
44
|
```
|
|
@@ -119,11 +119,12 @@ end
|
|
|
119
119
|
This would be compiled into:
|
|
120
120
|
|
|
121
121
|
```javascript
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
122
|
+
val = 42;
|
|
123
|
+
if (val !== false && val !== nil && val != null) {
|
|
124
|
+
return 3.142
|
|
125
|
+
} else {
|
|
126
|
+
return nil
|
|
127
|
+
};
|
|
127
128
|
```
|
|
128
129
|
|
|
129
130
|
This makes the generated truthy tests (`if` statements, `and` checks and
|
|
@@ -162,9 +163,9 @@ of JavaScript code that is wrapped inside an anonymous function. This
|
|
|
162
163
|
looks similar to the following:
|
|
163
164
|
|
|
164
165
|
```javascript
|
|
165
|
-
(function(
|
|
166
|
-
|
|
167
|
-
|
|
166
|
+
(function(Opal) {
|
|
167
|
+
// some setup code code
|
|
168
|
+
return self.$puts("foo")
|
|
168
169
|
})(Opal);
|
|
169
170
|
```
|
|
170
171
|
|
|
@@ -177,14 +178,15 @@ puts "foo"
|
|
|
177
178
|
This would compile directly into:
|
|
178
179
|
|
|
179
180
|
```javascript
|
|
180
|
-
(function(
|
|
181
|
-
var $
|
|
182
|
-
|
|
181
|
+
(function(Opal) {
|
|
182
|
+
var self = Opal.top, $nesting = [], nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice;
|
|
183
|
+
|
|
184
|
+
Opal.add_stubs(['$puts']);
|
|
185
|
+
return self.$puts("foo")
|
|
183
186
|
})(Opal);
|
|
184
187
|
```
|
|
185
188
|
|
|
186
|
-
|
|
187
|
-
example.
|
|
189
|
+
**TIP:** you can see the compiled code with this command: `opal --compile --no-exit --no-opal --eval 'puts "foo"'`
|
|
188
190
|
|
|
189
191
|
### Using compiled sources
|
|
190
192
|
|
data/docs/faq.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
### Why does Opal exist?
|
|
4
4
|
|
|
5
|
-
To try and keep ruby relevant in a world where client-side
|
|
5
|
+
To try and keep ruby relevant in a world where client-side applications are making javascript the primary development platform.
|
|
6
6
|
|
|
7
7
|
### How compatible is Opal?
|
|
8
8
|
|
|
9
|
-
We run opal against the [ruby spec](https://github.com/ruby/spec) as our primary testing setup. We try to make Opal as compatible as possible, whilst also taking into account restrictions of JavaScript when applicable. Opal supports the majority of ruby syntax features, as well as a very large part of the corelib implementation. We support method\_missing, modules, classes, instance\_exec, blocks, procs and lots lots more. Opal can compile and run
|
|
9
|
+
We run opal against the [ruby spec](https://github.com/ruby/spec) as our primary testing setup. We try to make Opal as compatible as possible, whilst also taking into account restrictions of JavaScript when applicable. Opal supports the majority of ruby syntax features, as well as a very large part of the corelib implementation. We support method\_missing, modules, classes, instance\_exec, blocks, procs and lots lots more. Opal can compile and run RSpec unmodified, as well as self hosting the compiler at runtime.
|
|
10
10
|
|
|
11
11
|
### What version of ruby does Opal target?
|
|
12
12
|
|
|
@@ -14,4 +14,4 @@ We are running tests under ruby 2.0.0 conditions, but are mostly compatible with
|
|
|
14
14
|
|
|
15
15
|
### Why doesn't Opal support mutable strings?
|
|
16
16
|
|
|
17
|
-
All strings in Opal are immutable because ruby strings just get compiled
|
|
17
|
+
All strings in Opal are immutable because ruby strings just get compiled directly into javascript strings, which are immutable. Wrapping ruby strings as a custom JavaScript object would add a lot of overhead as well as making interaction between ruby and javascript libraries more difficult.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Headless Chrome
|
|
2
|
+
|
|
3
|
+
## Requirements
|
|
4
|
+
|
|
5
|
+
First of all, make sure that you have Chrome at least 59.0 installed.
|
|
6
|
+
Also for now it's supported only on Mac and Linux. (version 60 may get support on Windows)
|
|
7
|
+
|
|
8
|
+
## Using the runner
|
|
9
|
+
|
|
10
|
+
To run your code using headless chrome, use `-R chrome` (`--runner chrome`) option:
|
|
11
|
+
|
|
12
|
+
$ opal -Rchrome -e "puts 'Hello, Opal'"
|
|
13
|
+
Hello, Opal
|
|
14
|
+
|
|
15
|
+
The runner also listens for any exceptions and prints formatted stracktraces back to your console:
|
|
16
|
+
|
|
17
|
+
$ opal -Rchrome -e "
|
|
18
|
+
def raising_method
|
|
19
|
+
raise 'test error'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
raising_method
|
|
23
|
+
"
|
|
24
|
+
|
|
25
|
+
RuntimeError : test error
|
|
26
|
+
at $$raise (file:///tmp/chrome-opal.js:4996:6)
|
|
27
|
+
at $$raising_method (file:///tmp/chrome-opal.js:21144:16)
|
|
28
|
+
at (file:///tmp/chrome-opal.js:21146:14)
|
|
29
|
+
at (file:///tmp/chrome-opal.js:21147:2)
|
|
30
|
+
|
|
31
|
+
## Using exit codes
|
|
32
|
+
|
|
33
|
+
By default headless chrome runner explicitly sets exit code to 1 when there was any error in the code.
|
|
34
|
+
|
|
35
|
+
$ opal -Rchrome -e "42"; echo $?
|
|
36
|
+
0
|
|
37
|
+
|
|
38
|
+
$ opal -Rchrome -e "raise 'error'"; echo $?
|
|
39
|
+
RuntimeError : error
|
|
40
|
+
at $$raise (file:///tmp/chrome-opal.js:4996:6)
|
|
41
|
+
at (file:///tmp/chrome-opal.js:21139:14)
|
|
42
|
+
at (file:///tmp/chrome-opal.js:21140:2)
|
|
43
|
+
1
|
|
44
|
+
|
|
45
|
+
You can change final exit code by using `Kernel#exit`, but make sure to require `opal/platform` in your code.
|
|
46
|
+
|
|
47
|
+
$ opal -Rchrome -ropal/platform -e "exit(0)"; echo $?
|
|
48
|
+
0
|
|
49
|
+
|
|
50
|
+
$ opal -Rchrome -ropal/platform -e "exit(1)"; echo $?
|
|
51
|
+
1
|
|
52
|
+
|
|
53
|
+
Also `Kernel#exit` doesn't abort your script. It simply takes the value that was passed to the first
|
|
54
|
+
invocation and persists it in `window.OPAL_EXIT_CODE`. Later headless chrome runner extracts it from the chrome runtime.
|
|
55
|
+
|
|
56
|
+
## Known limitations
|
|
57
|
+
|
|
58
|
+
1. `exit` doesn't abort you script (but `raise/throw` does)
|
|
59
|
+
2. When you call `console.log(one, two, three)` from your code headless chrome prints only the first passed object.
|
|
60
|
+
The reason behind it is the format of the message that chrome sends to the runner.
|
|
61
|
+
Opal intentionally uses a simplified method from Chrome API (`Console.messageAdded`) to catch `console.log` invocations.
|
|
62
|
+
(Check `lib/opal/cli_runners/chrome.js` do get more information)
|
|
63
|
+
|
|
64
|
+
## Internals
|
|
65
|
+
|
|
66
|
+
Under the hood when you call `opal -Rchrome -e 'your code'` Opal uses chrome runner that is defined in
|
|
67
|
+
`lib/opal/cli_runners/chrome.rb`. This runner tries to connect to `localhost:9222` (9222 is a default port for a headless chrome server)
|
|
68
|
+
or runs the server on its own. It detects your platform and uses a default path to the chrome executable
|
|
69
|
+
(`Opal::CliRunners::Chrome#chrome_executable`) but you can override it by specifying `GOOGLE_CHROME_BINARY` environment
|
|
70
|
+
variable.
|
|
71
|
+
|
|
72
|
+
When the server is up and running it passes compiled js code to `node lib/opal/cli_runners/chrome.js`
|
|
73
|
+
as a plain input using stdin (basically, it's a second part of the runner).
|
|
74
|
+
`chrome.js` is a node js script that does the main job. It runs any provided code on the running chrome server,
|
|
75
|
+
catches errors and forwards console messages.
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
Moreover, you can actually call any js using headless chrome by running
|
|
79
|
+
|
|
80
|
+
$ echo "console.log('Hello, Opal')" | node lib/opal/cli_runners/chrome.js
|
|
81
|
+
|
|
82
|
+
NOTE: to run it you need to have a chrome server running on `localhost:9222` (usually `chrome.rb` does it for you)
|
|
83
|
+
|
|
84
|
+
$ chrome --disable-gpu --headless --remote-debugging-port=9222
|
|
85
|
+
|
|
86
|
+
## Using a remote chrome server
|
|
87
|
+
|
|
88
|
+
If you want to change a default chrome port or your chrome server is running on a different host:port
|
|
89
|
+
you can override default values by specifying `CHROME_HOST` and `CHROME_PORT` environment variables:
|
|
90
|
+
|
|
91
|
+
$ CHROME_HOST=10.10.10.10 CHROME_PORT=8080 opal -Rchrome -e "puts 42"
|
|
92
|
+
Connecting to 10.10.10.10:8080...
|
|
93
|
+
42
|
|
94
|
+
|
|
95
|
+
NOTE: `CHROME_HOST` requires a chrome server to be started. You can't start remotely a server on a different host.
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## Additional options
|
|
99
|
+
|
|
100
|
+
If you need to pass additional CLI options to the Chrome executable you can do so by setting the `CHROME_OPTS` environment variable:
|
|
101
|
+
|
|
102
|
+
$ CHROME_OPS="--window-size=412,732" opal -Rchrome -e "puts 42"
|
|
103
|
+
42
|
|
104
|
+
|
|
105
|
+
_For a list of additional options see https://developers.google.com/web/updates/2017/04/headless-chrome_
|
data/docs/rspec.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# RSpec
|
|
2
2
|
|
|
3
3
|
`opal-rspec` allows opal to use rspec for running specs in javascript
|
|
4
|
-
environments. It comes with built-in support for running rspec with
|
|
5
|
-
|
|
4
|
+
environments. It comes with built-in support for running rspec with
|
|
5
|
+
standard web browser formatters. Also, async spec examples
|
|
6
6
|
are supported to reflect browser usage of ruby applications.
|
|
7
7
|
|
|
8
8
|
```ruby
|
|
@@ -25,23 +25,6 @@ gem 'opal-rspec'
|
|
|
25
25
|
|
|
26
26
|
## Running specs
|
|
27
27
|
|
|
28
|
-
### phantomjs
|
|
29
|
-
|
|
30
|
-
To run specs, a rake task can be added which will load all spec files
|
|
31
|
-
from `spec/`:
|
|
32
|
-
|
|
33
|
-
```ruby
|
|
34
|
-
# Rakefile
|
|
35
|
-
require 'opal/rspec/rake_task'
|
|
36
|
-
Opal::RSpec::RakeTask.new(:default)
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Then, to run your specs inside phantomjs, just run the rake task:
|
|
40
|
-
|
|
41
|
-
```sh
|
|
42
|
-
$ bundle exec rake
|
|
43
|
-
```
|
|
44
|
-
|
|
45
28
|
### In a Browser
|
|
46
29
|
|
|
47
30
|
`opal-rspec` can use sprockets to build and serve specs over a simple rack server. Add the following to a `config.ru` file:
|
|
@@ -51,7 +34,8 @@ $ bundle exec rake
|
|
|
51
34
|
require 'bundler'
|
|
52
35
|
Bundler.require
|
|
53
36
|
|
|
54
|
-
|
|
37
|
+
sprockets_env = Opal::RSpec::SprocketsEnvironment.new
|
|
38
|
+
run Opal::Server.new(sprockets: sprockets_env) { |s|
|
|
55
39
|
s.main = 'opal/rspec/sprockets_runner'
|
|
56
40
|
s.append_path 'spec'
|
|
57
41
|
s.debug = false
|
|
@@ -6,6 +6,12 @@ Opal does not support some language/runtime features of ruby. These are document
|
|
|
6
6
|
|
|
7
7
|
For performance and ease of runtime features, all strings in Opal are immutable, i.e. `#<<`, `#gsub!`, etc. do not exist. Also, symbols are just strings. There is no class, runtime or feature difference between Symbols and Strings. Their syntaxes can be used interchangeably.
|
|
8
8
|
|
|
9
|
+
#### Integer / Float difference ####
|
|
10
|
+
|
|
11
|
+
In Opal, both integers and floats belong to same class `Number` (using JavaScript native numbers). So `1 / 4` is `0.25` (not `0`) and `4.0 / 2` is `2` (not `2.0`).
|
|
12
|
+
|
|
13
|
+
`Number` is a subclass of `Numeric`, like `Complex` and `Rational`.
|
|
14
|
+
|
|
9
15
|
#### Encodings ####
|
|
10
16
|
|
|
11
17
|
Encodings only have a very small implementation inside Opal.
|
|
@@ -18,10 +24,6 @@ JavaScript does not have a native `Thread` implementation, so they are not prese
|
|
|
18
24
|
|
|
19
25
|
Opal does not currently support frozen objects, but has placeholder methods to prevent other libraries breaking when expecting these methods. Opal could support frozen objects in the future once a similar implementation becomes available across JavaScript runtimes.
|
|
20
26
|
|
|
21
|
-
#### `method_added` and `method_removed` hooks ####
|
|
22
|
-
|
|
23
|
-
These are not *currently* supported by Opal, but this is considered a bug and will be implemented soon.
|
|
24
|
-
|
|
25
27
|
#### Private, Public and Protected methods ####
|
|
26
28
|
|
|
27
29
|
All methods in Opal are defined as `public` to avoid additional runtime overhead. `Module#private` and `Module#protected` exist as just placeholder methods and are no-op methods.
|
data/examples/rack/Gemfile
CHANGED
data/examples/rack/Gemfile.lock
CHANGED
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ../../
|
|
3
3
|
specs:
|
|
4
|
-
opal (0.
|
|
4
|
+
opal (0.11.0.dev)
|
|
5
|
+
ast (>= 2.3.0)
|
|
5
6
|
hike (~> 1.2)
|
|
7
|
+
parser (>= 2.3.1.2)
|
|
6
8
|
sourcemap (~> 0.1.0)
|
|
7
|
-
sprockets (>= 2.2.3, < 4.0.0)
|
|
8
|
-
tilt (~> 1.4)
|
|
9
9
|
|
|
10
10
|
GEM
|
|
11
11
|
remote: https://rubygems.org/
|
|
12
12
|
specs:
|
|
13
|
+
ast (2.3.0)
|
|
13
14
|
hike (1.2.3)
|
|
14
|
-
|
|
15
|
+
parser (2.3.1.2)
|
|
16
|
+
ast (~> 2.2)
|
|
17
|
+
rack (2.0.1)
|
|
15
18
|
sourcemap (0.1.1)
|
|
16
|
-
sprockets (3.0.3)
|
|
17
|
-
rack (~> 1.0)
|
|
18
|
-
tilt (1.4.1)
|
|
19
19
|
|
|
20
20
|
PLATFORMS
|
|
21
21
|
ruby
|
|
22
22
|
|
|
23
23
|
DEPENDENCIES
|
|
24
24
|
opal!
|
|
25
|
+
rack
|
|
26
|
+
|
|
27
|
+
BUNDLED WITH
|
|
28
|
+
1.12.5
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
require 'opal'
|
|
2
2
|
require 'user'
|
|
3
|
+
require 'opal/platform'
|
|
3
4
|
|
|
4
5
|
module MyApp
|
|
5
6
|
class Application
|
|
6
7
|
def initialize
|
|
7
|
-
@user = User.new('
|
|
8
|
-
|
|
8
|
+
@user = User.new('Bob')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def title
|
|
12
|
+
"#{@user.name} is #{:not unless @user.authenticated?} authenticated"
|
|
9
13
|
end
|
|
10
14
|
end
|
|
11
15
|
end
|
|
12
16
|
|
|
13
|
-
MyApp::Application.new
|
|
17
|
+
$app = MyApp::Application.new
|
|
18
|
+
|
|
19
|
+
require 'native'
|
|
20
|
+
|
|
21
|
+
$$[:document][:title] = "#{$app.title}"
|
|
22
|
+
|
|
23
|
+
bill = User.new('Bill')
|
|
24
|
+
bill.authenticated?
|
data/examples/rack/app/user.rb
CHANGED
data/examples/rack/config.ru
CHANGED
|
@@ -10,7 +10,7 @@ Bundler.require
|
|
|
10
10
|
|
|
11
11
|
# with gems like opal-jquery or opal-browser you could manipulate the dom directly
|
|
12
12
|
|
|
13
|
-
run Opal::
|
|
13
|
+
run Opal::SimpleServer.new { |s|
|
|
14
14
|
# the name of the ruby file to load. To use more files they must be required from here (see app)
|
|
15
15
|
s.main = 'application'
|
|
16
16
|
# the directory where the code is (add to opal load path )
|
data/examples/sinatra/Gemfile
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ../..
|
|
3
3
|
specs:
|
|
4
|
-
opal (0.
|
|
4
|
+
opal (0.10.2)
|
|
5
5
|
hike (~> 1.2)
|
|
6
6
|
sourcemap (~> 0.1.0)
|
|
7
7
|
sprockets (~> 3.1)
|
|
@@ -10,9 +10,9 @@ PATH
|
|
|
10
10
|
GEM
|
|
11
11
|
remote: https://rubygems.org/
|
|
12
12
|
specs:
|
|
13
|
-
|
|
14
|
-
eventmachine (1.0.7)
|
|
13
|
+
concurrent-ruby (1.0.2)
|
|
15
14
|
hike (1.2.3)
|
|
15
|
+
puma (3.6.0)
|
|
16
16
|
rack (1.5.2)
|
|
17
17
|
rack-protection (1.5.3)
|
|
18
18
|
rack
|
|
@@ -21,12 +21,9 @@ GEM
|
|
|
21
21
|
rack-protection (~> 1.4)
|
|
22
22
|
tilt (~> 1.3, >= 1.3.4)
|
|
23
23
|
sourcemap (0.1.1)
|
|
24
|
-
sprockets (3.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
daemons (~> 1.0, >= 1.0.9)
|
|
28
|
-
eventmachine (~> 1.0)
|
|
29
|
-
rack (~> 1.0)
|
|
24
|
+
sprockets (3.7.0)
|
|
25
|
+
concurrent-ruby (~> 1.0)
|
|
26
|
+
rack (> 1, < 3)
|
|
30
27
|
tilt (1.4.1)
|
|
31
28
|
|
|
32
29
|
PLATFORMS
|
|
@@ -34,8 +31,8 @@ PLATFORMS
|
|
|
34
31
|
|
|
35
32
|
DEPENDENCIES
|
|
36
33
|
opal!
|
|
34
|
+
puma
|
|
37
35
|
sinatra
|
|
38
|
-
thin
|
|
39
36
|
|
|
40
37
|
BUNDLED WITH
|
|
41
|
-
1.
|
|
38
|
+
1.13.2
|
data/{bin → exe}/opal
RENAMED
|
@@ -12,11 +12,13 @@ rescue OptionParser::InvalidOption => e
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
require 'opal/cli'
|
|
15
|
-
|
|
15
|
+
options_hash = options.options
|
|
16
|
+
options_hash.merge!(
|
|
16
17
|
file: ARGF.file,
|
|
17
18
|
filename: ARGF.filename,
|
|
18
19
|
argv: ARGV.dup
|
|
19
|
-
)
|
|
20
|
+
) unless options_hash[:lib_only]
|
|
21
|
+
cli = Opal::CLI.new options_hash
|
|
20
22
|
|
|
21
23
|
begin
|
|
22
24
|
cli.run
|
data/{bin → exe}/opal-repl
RENAMED
|
@@ -6,6 +6,8 @@ module Opal
|
|
|
6
6
|
class V8Context
|
|
7
7
|
def initialize
|
|
8
8
|
@builder = Opal::Builder.new
|
|
9
|
+
@history_path = File.expand_path('~/.opal-repl-history')
|
|
10
|
+
@history = File.exist?(@history_path)
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
def run(filename = nil)
|
|
@@ -17,6 +19,13 @@ module Opal
|
|
|
17
19
|
abort 'opal-repl depends on therubyracer gem, which is not currently installed'
|
|
18
20
|
end
|
|
19
21
|
|
|
22
|
+
# Patch V8::Object#respond_to? to avoid MRI warning
|
|
23
|
+
V8::Object.class_eval do
|
|
24
|
+
def respond_to?(method, private = false)
|
|
25
|
+
super or self[method] != nil
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
20
29
|
@v8 = V8::Context.new
|
|
21
30
|
@v8['console'] = self
|
|
22
31
|
@v8.eval Opal::Builder.new.build('opal').to_s
|
|
@@ -38,6 +47,7 @@ module Opal
|
|
|
38
47
|
|
|
39
48
|
def run_repl
|
|
40
49
|
require 'readline'
|
|
50
|
+
load_history
|
|
41
51
|
|
|
42
52
|
loop do
|
|
43
53
|
# on SIGINT lets just return from the loop..
|
|
@@ -59,11 +69,23 @@ module Opal
|
|
|
59
69
|
code = Opal::Builder.new.build_str(str, '(irb)', :irb => true, :const_missing => true)
|
|
60
70
|
code.processed[0...-1].each { |c| @v8.eval(c.to_s) }
|
|
61
71
|
@v8.eval "var $_result = #{code.processed.last.to_s} ($_result == null ? 'nil' : $_result.$inspect());"
|
|
62
|
-
rescue => e
|
|
72
|
+
rescue Exception => e
|
|
63
73
|
puts "#{e.message}\n\t#{e.backtrace.join("\n\t")}"
|
|
64
74
|
end
|
|
65
75
|
|
|
76
|
+
def load_history
|
|
77
|
+
return unless @history
|
|
78
|
+
File.read(@history_path).lines.each { |line| Readline::HISTORY.push line.strip }
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def dump_history
|
|
82
|
+
return unless @history
|
|
83
|
+
length = (Readline::HISTORY.size > 1000) ? 1000 : Readline::HISTORY.size
|
|
84
|
+
File.write(@history_path, Readline::HISTORY.to_a[-length..-1].join("\n"))
|
|
85
|
+
end
|
|
86
|
+
|
|
66
87
|
def finish
|
|
88
|
+
dump_history
|
|
67
89
|
@v8 = nil
|
|
68
90
|
end
|
|
69
91
|
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'opal/ast/node'
|
|
3
|
+
require 'parser/ruby23'
|
|
4
|
+
|
|
5
|
+
module Opal
|
|
6
|
+
module AST
|
|
7
|
+
class Builder < ::Parser::Builders::Default
|
|
8
|
+
def n(type, children, location)
|
|
9
|
+
::Opal::AST::Node.new(type, children, location: location)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'ast'
|
|
3
|
+
require 'parser/ast/node'
|
|
4
|
+
|
|
5
|
+
module Opal
|
|
6
|
+
module AST
|
|
7
|
+
class Node < ::Parser::AST::Node
|
|
8
|
+
attr_reader :meta
|
|
9
|
+
|
|
10
|
+
def assign_properties(properties)
|
|
11
|
+
if meta = properties[:meta]
|
|
12
|
+
meta = meta.dup if meta.frozen?
|
|
13
|
+
@meta.merge!(meta)
|
|
14
|
+
else
|
|
15
|
+
@meta ||= {}
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
super
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def line
|
|
22
|
+
loc.line if loc
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def column
|
|
26
|
+
loc.column if loc
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|