opal 0.10.0 → 0.11.0.rc1
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 +28 -18
- data/.yardopts +3 -1
- data/CHANGELOG.md +139 -1
- data/Gemfile +16 -9
- data/HACKING.md +2 -0
- data/README.md +7 -6
- data/Rakefile +1 -1
- data/appveyor.yml +30 -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/opal +4 -2
- data/bin/opal-repl +23 -1
- data/docs/compiled_ruby.md +16 -14
- data/docs/faq.md +3 -3
- data/docs/rspec.md +2 -1
- 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/lib/opal/ast/builder.rb +17 -0
- data/lib/opal/ast/node.rb +30 -0
- data/lib/opal/builder.rb +14 -3
- data/lib/opal/builder_processors.rb +1 -0
- data/lib/opal/cli.rb +45 -59
- data/lib/opal/cli_options.rb +18 -11
- data/lib/opal/cli_runners/applescript.rb +3 -3
- data/lib/opal/cli_runners/nashorn.rb +1 -0
- data/lib/opal/cli_runners/nodejs.rb +4 -1
- data/lib/opal/cli_runners/phantom.js +1 -2
- data/lib/opal/cli_runners/phantomjs.rb +3 -2
- data/lib/opal/cli_runners/server.rb +1 -0
- data/lib/opal/cli_runners.rb +1 -0
- data/lib/opal/compiler.rb +145 -94
- data/lib/opal/config.rb +114 -36
- data/lib/opal/deprecations.rb +18 -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/hike_path_finder.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 +7 -7
- data/lib/opal/nodes/args/kwoptarg.rb +6 -7
- 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 +167 -155
- data/lib/opal/nodes/call_special.rb +31 -217
- 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 +40 -133
- data/lib/opal/nodes/defs.rb +29 -0
- data/lib/opal/nodes/for.rb +52 -25
- data/lib/opal/nodes/hash.rb +12 -35
- data/lib/opal/nodes/helpers.rb +27 -54
- 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 +194 -114
- data/lib/opal/nodes/logic.rb +20 -25
- data/lib/opal/nodes/masgn.rb +20 -18
- data/lib/opal/nodes/module.rb +10 -11
- data/lib/opal/nodes/node_with_args.rb +14 -17
- data/lib/opal/nodes/rescue.rb +37 -70
- data/lib/opal/nodes/runtime_helpers.rb +8 -3
- data/lib/opal/nodes/scope.rb +9 -5
- data/lib/opal/nodes/singleton_class.rb +4 -3
- data/lib/opal/nodes/super.rb +115 -87
- data/lib/opal/nodes/top.rb +7 -2
- data/lib/opal/nodes/variables.rb +46 -35
- data/lib/opal/nodes/while.rb +11 -1
- data/lib/opal/nodes/yield.rb +1 -17
- data/lib/opal/nodes.rb +3 -0
- data/lib/opal/parser.rb +28 -770
- data/lib/opal/path_reader.rb +5 -1
- data/lib/opal/paths.rb +10 -4
- data/lib/opal/regexp_anchors.rb +1 -0
- data/lib/opal/rewriter.rb +60 -0
- data/lib/opal/rewriters/base.rb +60 -0
- data/lib/opal/rewriters/binary_operator_assignment.rb +144 -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/js_reserved_words.rb +111 -0
- data/lib/opal/rewriters/logical_operator_assignment.rb +155 -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 +100 -0
- data/lib/opal/source_map.rb +1 -1
- data/lib/opal/util.rb +5 -5
- data/lib/opal/version.rb +2 -1
- data/lib/opal.rb +6 -1
- data/lib/tilt/opal.rb +1 -0
- data/opal/README.md +1 -1
- data/opal/corelib/array.rb +137 -83
- data/opal/corelib/basic_object.rb +6 -6
- data/opal/corelib/class.rb +14 -11
- data/opal/corelib/complex.rb +5 -1
- data/opal/corelib/constants.rb +3 -3
- data/opal/corelib/enumerable.rb +129 -11
- data/opal/corelib/error.rb +35 -17
- data/opal/corelib/file.rb +65 -170
- data/opal/corelib/hash.rb +128 -13
- data/opal/corelib/helpers.rb +12 -15
- data/opal/corelib/io.rb +1 -0
- data/opal/corelib/kernel.rb +40 -21
- data/opal/corelib/marshal/read_buffer.rb +1 -1
- data/opal/corelib/method.rb +33 -13
- data/opal/corelib/module.rb +134 -82
- data/opal/corelib/number.rb +141 -25
- data/opal/corelib/numeric.rb +0 -8
- 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 +133 -10
- data/opal/corelib/regexp.rb +37 -9
- data/opal/corelib/runtime.js +604 -394
- data/opal/corelib/string/encoding.rb +51 -7
- data/opal/corelib/string.rb +39 -8
- data/opal/corelib/struct.rb +20 -0
- data/opal/corelib/time.rb +2 -2
- data/opal/corelib/variables.rb +1 -1
- data/opal/opal.rb +1 -0
- data/opal.gemspec +9 -8
- data/spec/filters/bugs/array.rb +5 -1
- data/spec/filters/bugs/basicobject.rb +2 -5
- data/spec/filters/bugs/bigdecimal.rb +8 -22
- data/spec/filters/bugs/class.rb +2 -1
- data/spec/filters/bugs/comparable.rb +5 -0
- data/spec/filters/bugs/date.rb +3 -3
- data/spec/filters/bugs/enumerable.rb +4 -11
- data/spec/filters/bugs/enumerator.rb +2 -4
- data/spec/filters/bugs/exception.rb +16 -2
- data/spec/filters/bugs/file.rb +8 -0
- data/spec/filters/bugs/float.rb +7 -1
- data/spec/filters/bugs/hash.rb +6 -2
- data/spec/filters/bugs/integer.rb +2 -0
- data/spec/filters/bugs/io.rb +8 -0
- data/spec/filters/bugs/kernel.rb +9 -138
- data/spec/filters/bugs/language.rb +89 -174
- data/spec/filters/bugs/marshal.rb +33 -35
- data/spec/filters/bugs/method.rb +0 -24
- data/spec/filters/bugs/module.rb +19 -57
- data/spec/filters/bugs/numeric.rb +0 -119
- data/spec/filters/bugs/pathname.rb +2 -0
- data/spec/filters/bugs/proc.rb +5 -4
- data/spec/filters/bugs/random.rb +7 -0
- data/spec/filters/bugs/range.rb +12 -120
- data/spec/filters/bugs/rational.rb +1 -1
- data/spec/filters/bugs/regexp.rb +2 -40
- data/spec/filters/bugs/set.rb +0 -1
- data/spec/filters/bugs/string.rb +5 -8
- data/spec/filters/bugs/stringscanner.rb +11 -19
- data/spec/filters/bugs/time.rb +7 -1
- data/spec/filters/bugs/unboundmethod.rb +1 -11
- data/spec/filters/unsupported/array.rb +5 -1
- data/spec/filters/unsupported/basicobject.rb +1 -1
- data/spec/filters/unsupported/bignum.rb +4 -1
- data/spec/filters/unsupported/class.rb +1 -1
- data/spec/filters/unsupported/delegator.rb +1 -1
- data/spec/filters/unsupported/enumerable.rb +1 -1
- data/spec/filters/unsupported/enumerator.rb +1 -1
- data/spec/filters/unsupported/file.rb +4 -0
- data/spec/filters/unsupported/fixnum.rb +1 -1
- data/spec/filters/unsupported/float.rb +4 -1
- data/spec/filters/unsupported/freeze.rb +27 -5
- data/spec/filters/unsupported/hash.rb +7 -15
- data/spec/filters/unsupported/integer.rb +1 -1
- data/spec/filters/unsupported/kernel.rb +2 -1
- data/spec/filters/unsupported/language.rb +6 -1
- data/spec/filters/unsupported/marshal.rb +1 -1
- data/spec/filters/unsupported/matchdata.rb +4 -1
- data/spec/filters/unsupported/math.rb +1 -1
- data/spec/filters/unsupported/pathname.rb +1 -1
- data/spec/filters/unsupported/privacy.rb +141 -9
- data/spec/filters/unsupported/proc.rb +1 -1
- data/spec/filters/unsupported/random.rb +4 -0
- data/spec/filters/unsupported/range.rb +7 -0
- data/spec/filters/unsupported/regexp.rb +25 -15
- data/spec/filters/unsupported/set.rb +1 -1
- data/spec/filters/unsupported/singleton.rb +1 -1
- data/spec/filters/unsupported/string.rb +110 -101
- data/spec/filters/unsupported/struct.rb +1 -1
- data/spec/filters/unsupported/symbol.rb +2 -1
- data/spec/filters/unsupported/taint.rb +22 -7
- data/spec/filters/unsupported/thread.rb +1 -1
- data/spec/filters/unsupported/time.rb +1 -1
- data/spec/lib/builder_spec.rb +17 -0
- data/spec/lib/cli_runners/phantomjs_spec.rb +2 -2
- data/spec/lib/cli_spec.rb +37 -8
- data/spec/lib/compiler/call_spec.rb +98 -66
- data/spec/lib/compiler_spec.rb +41 -32
- data/spec/lib/config_spec.rb +97 -0
- data/spec/lib/dependency_resolver_spec.rb +2 -2
- data/spec/lib/deprecations_spec.rb +16 -0
- data/spec/lib/fixtures/source_location_test.rb +7 -0
- data/spec/lib/path_reader_spec.rb +3 -3
- data/spec/lib/rewriters/binary_operator_assignment_spec.rb +151 -0
- data/spec/lib/rewriters/block_to_iter_spec.rb +28 -0
- data/spec/lib/rewriters/dot_js_syntax_spec.rb +108 -0
- data/spec/lib/rewriters/explicit_writer_return_spec.rb +186 -0
- data/spec/lib/rewriters/js_reserved_words_spec.rb +116 -0
- data/spec/lib/rewriters/logical_operator_assignment_spec.rb +202 -0
- data/spec/lib/rewriters/opal_engine_check_spec.rb +82 -0
- data/spec/lib/rewriters/rubyspec/filters_rewriter_spec.rb +53 -0
- data/spec/lib/simple_server_spec.rb +54 -0
- data/spec/lib/spec_helper.rb +88 -4
- data/spec/mspec-opal/formatters.rb +65 -17
- data/spec/mspec-opal/runner.rb +47 -67
- data/spec/opal/core/date_spec.rb +14 -0
- data/spec/opal/core/exception_spec.rb +10 -0
- data/spec/opal/core/hash/internals_spec.rb +10 -10
- data/spec/opal/core/kernel/rand_spec.rb +0 -4
- data/spec/opal/core/kernel/respond_to_spec.rb +5 -2
- data/spec/opal/core/language/constant_lookup_spec.rb +38 -0
- data/spec/opal/core/language/safe_navigator_spec.rb +7 -0
- data/spec/opal/core/language/send_spec.rb +1 -9
- data/spec/opal/core/language/string_spec.rb +8 -8
- data/spec/opal/core/language/versions/def_2_0_spec.rb +0 -4
- data/spec/opal/core/language_spec.rb +32 -0
- data/spec/opal/core/module/const_get_spec.rb +1 -1
- data/spec/opal/core/runtime/is_a_spec.rb +36 -0
- data/spec/opal/core/runtime/rescue_spec.rb +35 -0
- data/spec/opal/core/runtime_spec.rb +4 -4
- data/spec/opal/core/string_spec.rb +8 -8
- data/spec/opal/core/time_spec.rb +38 -0
- data/spec/opal/stdlib/erb/quoted.opalerb +1 -1
- data/spec/opal/stdlib/json/parse_spec.rb +4 -0
- data/spec/opal/stdlib/native/hash_spec.rb +16 -0
- data/spec/ruby_specs +2 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/support/rewriters_helper.rb +24 -0
- data/stdlib/base64.rb +4 -2
- data/stdlib/bigdecimal/bignumber.js.rb +1 -1
- data/stdlib/date.rb +18 -19
- 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 +49 -20
- data/stdlib/nodejs/io.rb +22 -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 +163 -0
- data/stdlib/nodejs/yaml.rb +2 -1
- data/stdlib/opal/platform.rb +5 -13
- data/stdlib/opal-platform.rb +15 -0
- data/stdlib/pathname.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 +13 -0
- data/tasks/testing.rake +322 -205
- data/test/nodejs/fixtures/hello.rb +1 -0
- data/test/nodejs/test_file.rb +57 -0
- data/test/nodejs/test_io.rb +18 -0
- data/test/nodejs/test_opal_builder.rb +12 -0
- data/test/opal/unsupported_and_bugs.rb +9 -0
- metadata +131 -242
- 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/filters/bugs/compiler_opal.rb +0 -5
- data/spec/filters/bugs/language_opal.rb +0 -88
- data/spec/filters/unsupported/module.rb +0 -8
- data/spec/lib/compiler/pre_processed_conditionals_spec.rb +0 -87
- 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/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/opal/core/language/block_spec.rb +0 -538
- data/spec/opal/core/language/proc_spec.rb +0 -263
- data/spec/opal/core/language/variables_spec.rb +0 -1366
- data/spec/opal/core/runtime/block_send_spec.rb +0 -28
- data/spec/opal/core/runtime/send_spec.rb +0 -34
- 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/LICENSE +0 -21
- 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/LICENSE +0 -21
- 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/{CODE_OF_CONDUCT.md → CONDUCT.md} +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/bin/opal
CHANGED
|
@@ -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/opal-repl
CHANGED
|
@@ -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
|
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.
|
data/docs/rspec.md
CHANGED
|
@@ -51,7 +51,8 @@ $ bundle exec rake
|
|
|
51
51
|
require 'bundler'
|
|
52
52
|
Bundler.require
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
sprockets_env = Opal::RSpec::SprocketsEnvironment.new
|
|
55
|
+
run Opal::Server.new(sprockets: sprockets_env) { |s|
|
|
55
56
|
s.main = 'opal/rspec/sprockets_runner'
|
|
56
57
|
s.append_path 'spec'
|
|
57
58
|
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
|
|
@@ -0,0 +1,17 @@
|
|
|
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 string_value(token)
|
|
9
|
+
token[0]
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def n(type, children, location)
|
|
13
|
+
::Opal::AST::Node.new(type, children, location: location)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
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
|
data/lib/opal/builder.rb
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'opal/path_reader'
|
|
2
3
|
require 'opal/builder_processors'
|
|
3
4
|
require 'opal/paths'
|
|
5
|
+
require 'opal/config'
|
|
4
6
|
require 'set'
|
|
5
7
|
|
|
6
8
|
module Opal
|
|
@@ -20,7 +22,7 @@ module Opal
|
|
|
20
22
|
@processors ||= DEFAULT_PROCESSORS
|
|
21
23
|
@path_reader ||= PathReader.new
|
|
22
24
|
@prerequired ||= []
|
|
23
|
-
@compiler_options ||=
|
|
25
|
+
@compiler_options ||= Opal::Config.compiler_options
|
|
24
26
|
@default_processor ||= RubyProcessor
|
|
25
27
|
|
|
26
28
|
@processed = []
|
|
@@ -114,8 +116,17 @@ module Opal
|
|
|
114
116
|
end
|
|
115
117
|
|
|
116
118
|
def read(path)
|
|
117
|
-
path_reader.read(path) or
|
|
118
|
-
|
|
119
|
+
path_reader.read(path) or begin
|
|
120
|
+
message = "can't find file: #{path.inspect} in #{path_reader.paths.inspect}"
|
|
121
|
+
|
|
122
|
+
case compiler_options[:dynamic_require_severity]
|
|
123
|
+
when :raise then raise MissingRequire, message
|
|
124
|
+
when :warning then warn message
|
|
125
|
+
else # noop
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
return "raise LoadError, #{message.inspect}"
|
|
129
|
+
end
|
|
119
130
|
end
|
|
120
131
|
|
|
121
132
|
def process_require(filename, options)
|