opal-wedge 0.9.0.dev
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 +7 -0
- data/.gitignore +14 -0
- data/.gitmodules +7 -0
- data/.inch.yml +19 -0
- data/.jshintrc +48 -0
- data/.rspec +3 -0
- data/.spectator +2 -0
- data/.spectator-mspec +3 -0
- data/.travis.yml +60 -0
- data/.yardopts +6 -0
- data/CHANGELOG.md +571 -0
- data/CODE_OF_CONDUCT.md +15 -0
- data/CONTRIBUTING.md +192 -0
- data/Gemfile +26 -0
- data/Guardfile +77 -0
- data/LICENSE +19 -0
- data/README.md +167 -0
- data/Rakefile +15 -0
- data/benchmark/benchmarks +103 -0
- data/benchmark/bm_array_intersection_numbers.rb +7 -0
- data/benchmark/bm_array_intersection_objects.rb +7 -0
- data/benchmark/bm_array_intersection_strings.rb +7 -0
- data/benchmark/bm_array_minus_numbers.rb +7 -0
- data/benchmark/bm_array_minus_objects.rb +7 -0
- data/benchmark/bm_array_minus_strings.rb +7 -0
- data/benchmark/bm_array_union_numbers.rb +7 -0
- data/benchmark/bm_array_union_objects.rb +7 -0
- data/benchmark/bm_array_union_strings.rb +7 -0
- data/benchmark/bm_array_uniq_bang_numbers.rb +5 -0
- data/benchmark/bm_array_uniq_bang_objects.rb +5 -0
- data/benchmark/bm_array_uniq_bang_strings.rb +5 -0
- data/benchmark/bm_array_uniq_numbers.rb +5 -0
- data/benchmark/bm_array_uniq_objects.rb +5 -0
- data/benchmark/bm_array_uniq_strings.rb +5 -0
- data/benchmark/bm_dispatch_bind_table.rb +57 -0
- data/benchmark/bm_dispatch_code_gen.rb +65 -0
- data/benchmark/bm_dispatch_code_gen_if.rb +64 -0
- data/benchmark/bm_dispatch_hardcoded.rb +44 -0
- data/benchmark/bm_dispatch_send.rb +38 -0
- data/benchmark/bm_dispatch_send_table.rb +57 -0
- data/benchmark/bm_hash_assoc_object.rb +11 -0
- data/benchmark/bm_hash_assoc_string.rb +9 -0
- data/benchmark/bm_hash_clone_object.rb +9 -0
- data/benchmark/bm_hash_clone_string.rb +9 -0
- data/benchmark/bm_hash_delete_object.rb +11 -0
- data/benchmark/bm_hash_delete_string.rb +9 -0
- data/benchmark/bm_hash_each_key_object.rb +9 -0
- data/benchmark/bm_hash_each_key_string.rb +9 -0
- data/benchmark/bm_hash_each_object.rb +9 -0
- data/benchmark/bm_hash_each_string.rb +9 -0
- data/benchmark/bm_hash_each_value_object.rb +9 -0
- data/benchmark/bm_hash_each_value_string.rb +9 -0
- data/benchmark/bm_hash_element_reference_object.rb +11 -0
- data/benchmark/bm_hash_element_reference_string.rb +9 -0
- data/benchmark/bm_hash_element_set_object.rb +5 -0
- data/benchmark/bm_hash_element_set_string.rb +5 -0
- data/benchmark/bm_hash_equal_value_object.rb +14 -0
- data/benchmark/bm_hash_equal_value_string.rb +11 -0
- data/benchmark/bm_hash_fetch_object.rb +11 -0
- data/benchmark/bm_hash_fetch_string.rb +9 -0
- data/benchmark/bm_hash_flatten_object.rb +9 -0
- data/benchmark/bm_hash_flatten_string.rb +9 -0
- data/benchmark/bm_hash_has_key_object.rb +11 -0
- data/benchmark/bm_hash_has_key_string.rb +9 -0
- data/benchmark/bm_hash_has_value_object.rb +9 -0
- data/benchmark/bm_hash_has_value_string.rb +9 -0
- data/benchmark/bm_hash_hash_object.rb +9 -0
- data/benchmark/bm_hash_hash_string.rb +9 -0
- data/benchmark/bm_hash_inspect_object.rb +9 -0
- data/benchmark/bm_hash_inspect_string.rb +9 -0
- data/benchmark/bm_hash_invert_object.rb +9 -0
- data/benchmark/bm_hash_invert_string.rb +9 -0
- data/benchmark/bm_hash_keep_if_object.rb +9 -0
- data/benchmark/bm_hash_keep_if_string.rb +9 -0
- data/benchmark/bm_hash_key_object.rb +9 -0
- data/benchmark/bm_hash_key_string.rb +9 -0
- data/benchmark/bm_hash_keys_object.rb +9 -0
- data/benchmark/bm_hash_keys_string.rb +9 -0
- data/benchmark/bm_hash_literal_mixed_large.rb +3 -0
- data/benchmark/bm_hash_literal_mixed_small.rb +3 -0
- data/benchmark/bm_hash_literal_object_large.rb +4 -0
- data/benchmark/bm_hash_literal_object_small.rb +3 -0
- data/benchmark/bm_hash_literal_string_large.rb +4 -0
- data/benchmark/bm_hash_literal_string_small.rb +3 -0
- data/benchmark/bm_hash_merge_object.rb +22 -0
- data/benchmark/bm_hash_merge_string.rb +18 -0
- data/benchmark/bm_hash_rassoc_object.rb +9 -0
- data/benchmark/bm_hash_rassoc_string.rb +9 -0
- data/benchmark/bm_hash_rehash_object.rb +9 -0
- data/benchmark/bm_hash_rehash_string.rb +9 -0
- data/benchmark/bm_hash_reject_bang_object.rb +9 -0
- data/benchmark/bm_hash_reject_bang_string.rb +9 -0
- data/benchmark/bm_hash_reject_object.rb +9 -0
- data/benchmark/bm_hash_reject_string.rb +9 -0
- data/benchmark/bm_hash_replace_object.rb +18 -0
- data/benchmark/bm_hash_replace_string.rb +14 -0
- data/benchmark/bm_hash_select_bang_object.rb +9 -0
- data/benchmark/bm_hash_select_bang_string.rb +9 -0
- data/benchmark/bm_hash_select_object.rb +9 -0
- data/benchmark/bm_hash_select_string.rb +9 -0
- data/benchmark/bm_hash_shift_object.rb +10 -0
- data/benchmark/bm_hash_shift_string.rb +10 -0
- data/benchmark/bm_hash_to_a_object.rb +9 -0
- data/benchmark/bm_hash_to_a_string.rb +9 -0
- data/benchmark/bm_hash_to_h_object.rb +10 -0
- data/benchmark/bm_hash_to_h_string.rb +10 -0
- data/benchmark/bm_hash_values_object.rb +9 -0
- data/benchmark/bm_hash_values_string.rb +9 -0
- data/benchmark/run.rb +37 -0
- data/bin/opal +27 -0
- data/bin/opal-build +77 -0
- data/bin/opal-mspec +10 -0
- data/bin/opal-repl +72 -0
- data/config.ru +14 -0
- data/docs/compiler_directives.md +127 -0
- data/examples/rack/.gitignore +1 -0
- data/examples/rack/Gemfile +3 -0
- data/examples/rack/app/application.rb +13 -0
- data/examples/rack/app/user.rb +22 -0
- data/examples/rack/config.ru +20 -0
- data/examples/rack/index.html.erb +10 -0
- data/examples/sinatra/Gemfile +5 -0
- data/examples/sinatra/app/application.rb +7 -0
- data/examples/sinatra/config.ru +38 -0
- data/lib/mspec/opal/main.rb.erb +9 -0
- data/lib/mspec/opal/new.html.erb +1 -0
- data/lib/mspec/opal/rake_task.rb +248 -0
- data/lib/mspec/opal/runner.rb +281 -0
- data/lib/mspec/opal/special_calls.rb +44 -0
- data/lib/mspec/opal/sprockets.js +57 -0
- data/lib/opal-wedge.rb +4 -0
- data/lib/opal.rb +11 -0
- data/lib/opal/builder.rb +161 -0
- data/lib/opal/builder_processors.rb +149 -0
- data/lib/opal/cli.rb +162 -0
- data/lib/opal/cli_options.rb +158 -0
- data/lib/opal/cli_runners.rb +11 -0
- data/lib/opal/cli_runners/apple_script.rb +65 -0
- data/lib/opal/cli_runners/nodejs.rb +63 -0
- data/lib/opal/cli_runners/phantom.js +44 -0
- data/lib/opal/cli_runners/phantomjs.rb +28 -0
- data/lib/opal/cli_runners/server.rb +56 -0
- data/lib/opal/compiler.rb +381 -0
- data/lib/opal/config.rb +48 -0
- data/lib/opal/erb.rb +84 -0
- data/lib/opal/fragment.rb +53 -0
- data/lib/opal/hike_path_finder.rb +18 -0
- data/lib/opal/nodes.rb +26 -0
- data/lib/opal/nodes/arglist.rb +56 -0
- data/lib/opal/nodes/array.rb +54 -0
- data/lib/opal/nodes/base.rb +151 -0
- data/lib/opal/nodes/call.rb +290 -0
- data/lib/opal/nodes/call_special.rb +252 -0
- data/lib/opal/nodes/case.rb +96 -0
- data/lib/opal/nodes/class.rb +42 -0
- data/lib/opal/nodes/constants.rb +78 -0
- data/lib/opal/nodes/def.rb +281 -0
- data/lib/opal/nodes/defined.rb +113 -0
- data/lib/opal/nodes/definitions.rb +168 -0
- data/lib/opal/nodes/for.rb +48 -0
- data/lib/opal/nodes/hash.rb +67 -0
- data/lib/opal/nodes/helpers.rb +116 -0
- data/lib/opal/nodes/if.rb +81 -0
- data/lib/opal/nodes/iter.rb +136 -0
- data/lib/opal/nodes/literal.rb +247 -0
- data/lib/opal/nodes/logic.rb +217 -0
- data/lib/opal/nodes/masgn.rb +62 -0
- data/lib/opal/nodes/module.rb +45 -0
- data/lib/opal/nodes/rescue.rb +143 -0
- data/lib/opal/nodes/runtime_helpers.rb +45 -0
- data/lib/opal/nodes/scope.rb +281 -0
- data/lib/opal/nodes/singleton_class.rb +26 -0
- data/lib/opal/nodes/super.rb +97 -0
- data/lib/opal/nodes/top.rb +103 -0
- data/lib/opal/nodes/variables.rb +191 -0
- data/lib/opal/nodes/while.rb +65 -0
- data/lib/opal/nodes/yield.rb +95 -0
- data/lib/opal/parser.rb +742 -0
- data/lib/opal/parser/grammar.rb +5723 -0
- data/lib/opal/parser/grammar.y +1787 -0
- data/lib/opal/parser/keywords.rb +66 -0
- data/lib/opal/parser/lexer.rb +1260 -0
- data/lib/opal/parser/parser_scope.rb +28 -0
- data/lib/opal/parser/sexp.rb +81 -0
- data/lib/opal/path_reader.rb +35 -0
- data/lib/opal/paths.rb +55 -0
- data/lib/opal/regexp_anchors.rb +5 -0
- data/lib/opal/source_map.rb +70 -0
- data/lib/opal/sprockets.rb +3 -0
- data/lib/opal/sprockets/cache_key_fix.rb +17 -0
- data/lib/opal/sprockets/environment.rb +31 -0
- data/lib/opal/sprockets/erb.rb +23 -0
- data/lib/opal/sprockets/path_reader.rb +36 -0
- data/lib/opal/sprockets/processor.rb +167 -0
- data/lib/opal/sprockets/server.rb +160 -0
- data/lib/opal/sprockets/source_map_header_patch.rb +41 -0
- data/lib/opal/sprockets/source_map_server.rb +115 -0
- data/lib/opal/util.rb +69 -0
- data/lib/opal/version.rb +5 -0
- data/lib/tilt/opal.rb +54 -0
- data/opal.gemspec +37 -0
- data/opal/README.md +6 -0
- data/opal/corelib/array.rb +2073 -0
- data/opal/corelib/array/inheritance.rb +127 -0
- data/opal/corelib/basic_object.rb +82 -0
- data/opal/corelib/boolean.rb +47 -0
- data/opal/corelib/class.rb +55 -0
- data/opal/corelib/comparable.rb +57 -0
- data/opal/corelib/complex.rb +3 -0
- data/opal/corelib/dir.rb +20 -0
- data/opal/corelib/enumerable.rb +1138 -0
- data/opal/corelib/enumerator.rb +426 -0
- data/opal/corelib/error.rb +77 -0
- data/opal/corelib/file.rb +59 -0
- data/opal/corelib/hash.rb +951 -0
- data/opal/corelib/helpers.rb +102 -0
- data/opal/corelib/io.rb +73 -0
- data/opal/corelib/kernel.rb +1124 -0
- data/opal/corelib/main.rb +7 -0
- data/opal/corelib/match_data.rb +128 -0
- data/opal/corelib/method.rb +62 -0
- data/opal/corelib/module.rb +553 -0
- data/opal/corelib/nil_class.rb +57 -0
- data/opal/corelib/numeric.rb +564 -0
- data/opal/corelib/proc.rb +105 -0
- data/opal/corelib/process.rb +27 -0
- data/opal/corelib/range.rb +116 -0
- data/opal/corelib/rational.rb +3 -0
- data/opal/corelib/regexp.rb +203 -0
- data/opal/corelib/runtime.js +1637 -0
- data/opal/corelib/string.rb +1762 -0
- data/opal/corelib/string/inheritance.rb +117 -0
- data/opal/corelib/struct.rb +159 -0
- data/opal/corelib/time.rb +746 -0
- data/opal/corelib/variables.rb +28 -0
- data/opal/opal.rb +33 -0
- data/spec/README.md +8 -0
- data/spec/filters/bugs/array.rb +77 -0
- data/spec/filters/bugs/basicobject.rb +33 -0
- data/spec/filters/bugs/class.rb +15 -0
- data/spec/filters/bugs/comparable.rb +4 -0
- data/spec/filters/bugs/date.rb +173 -0
- data/spec/filters/bugs/enumerable.rb +62 -0
- data/spec/filters/bugs/enumerator.rb +45 -0
- data/spec/filters/bugs/exception.rb +84 -0
- data/spec/filters/bugs/fixnum.rb +35 -0
- data/spec/filters/bugs/float.rb +100 -0
- data/spec/filters/bugs/hash.rb +17 -0
- data/spec/filters/bugs/integer.rb +63 -0
- data/spec/filters/bugs/kernel.rb +395 -0
- data/spec/filters/bugs/language.rb +246 -0
- data/spec/filters/bugs/math.rb +89 -0
- data/spec/filters/bugs/method.rb +5 -0
- data/spec/filters/bugs/module.rb +372 -0
- data/spec/filters/bugs/nil.rb +7 -0
- data/spec/filters/bugs/numeric.rb +123 -0
- data/spec/filters/bugs/proc.rb +65 -0
- data/spec/filters/bugs/range.rb +148 -0
- data/spec/filters/bugs/regexp.rb +252 -0
- data/spec/filters/bugs/set.rb +51 -0
- data/spec/filters/bugs/singleton.rb +6 -0
- data/spec/filters/bugs/string.rb +99 -0
- data/spec/filters/bugs/strscan.rb +106 -0
- data/spec/filters/bugs/struct.rb +22 -0
- data/spec/filters/bugs/time.rb +28 -0
- data/spec/filters/bugs/unboundmethod.rb +22 -0
- data/spec/filters/unsupported/array.rb +176 -0
- data/spec/filters/unsupported/basicobject.rb +12 -0
- data/spec/filters/unsupported/class.rb +4 -0
- data/spec/filters/unsupported/delegator.rb +5 -0
- data/spec/filters/unsupported/enumerable.rb +8 -0
- data/spec/filters/unsupported/enumerator.rb +13 -0
- data/spec/filters/unsupported/fixnum.rb +15 -0
- data/spec/filters/unsupported/float.rb +6 -0
- data/spec/filters/unsupported/hash.rb +55 -0
- data/spec/filters/unsupported/integer.rb +3 -0
- data/spec/filters/unsupported/kernel.rb +22 -0
- data/spec/filters/unsupported/language.rb +31 -0
- data/spec/filters/unsupported/matchdata.rb +33 -0
- data/spec/filters/unsupported/math.rb +3 -0
- data/spec/filters/unsupported/module.rb +36 -0
- data/spec/filters/unsupported/pathname.rb +3 -0
- data/spec/filters/unsupported/regexp.rb +94 -0
- data/spec/filters/unsupported/set.rb +4 -0
- data/spec/filters/unsupported/singleton.rb +6 -0
- data/spec/filters/unsupported/string.rb +538 -0
- data/spec/filters/unsupported/struct.rb +3 -0
- data/spec/filters/unsupported/time.rb +208 -0
- data/spec/lib/builder_processors_spec.rb +27 -0
- data/spec/lib/builder_spec.rb +72 -0
- data/spec/lib/cli_spec.rb +150 -0
- data/spec/lib/compiler/pre_processed_conditionals_spec.rb +87 -0
- data/spec/lib/compiler_spec.rb +131 -0
- data/spec/lib/dependency_resolver_spec.rb +40 -0
- data/spec/lib/fixtures/complex_sprockets.js.rb.erb +4 -0
- data/spec/lib/fixtures/file_with_directives.js +2 -0
- data/spec/lib/fixtures/jst_file.js.jst +1 -0
- data/spec/lib/fixtures/no_requires.rb +1 -0
- data/spec/lib/fixtures/opal_file.rb +2 -0
- data/spec/lib/fixtures/require_tree_test.rb +3 -0
- data/spec/lib/fixtures/required_file.js +1 -0
- data/spec/lib/fixtures/required_tree_test/required_file1.rb +1 -0
- data/spec/lib/fixtures/required_tree_test/required_file2.rb +1 -0
- data/spec/lib/fixtures/requires.rb +7 -0
- data/spec/lib/fixtures/source_map.rb +1 -0
- data/spec/lib/fixtures/source_map/subfolder/other_file.rb +1 -0
- data/spec/lib/fixtures/sprockets_file.js.rb +3 -0
- data/spec/lib/fixtures/sprockets_require_tree_test.rb +3 -0
- data/spec/lib/hike_path_finder_spec.rb +23 -0
- data/spec/lib/lexer_spec.rb +110 -0
- data/spec/lib/parser/alias_spec.rb +26 -0
- data/spec/lib/parser/and_spec.rb +13 -0
- data/spec/lib/parser/attrasgn_spec.rb +28 -0
- data/spec/lib/parser/begin_spec.rb +42 -0
- data/spec/lib/parser/block_spec.rb +12 -0
- data/spec/lib/parser/break_spec.rb +17 -0
- data/spec/lib/parser/call_spec.rb +165 -0
- data/spec/lib/parser/class_spec.rb +35 -0
- data/spec/lib/parser/comments_spec.rb +11 -0
- data/spec/lib/parser/def_spec.rb +80 -0
- data/spec/lib/parser/if_spec.rb +26 -0
- data/spec/lib/parser/iter_spec.rb +59 -0
- data/spec/lib/parser/lambda_spec.rb +64 -0
- data/spec/lib/parser/literal_spec.rb +118 -0
- data/spec/lib/parser/masgn_spec.rb +37 -0
- data/spec/lib/parser/module_spec.rb +27 -0
- data/spec/lib/parser/not_spec.rb +21 -0
- data/spec/lib/parser/op_asgn1_spec.rb +23 -0
- data/spec/lib/parser/op_asgn2_spec.rb +23 -0
- data/spec/lib/parser/or_spec.rb +13 -0
- data/spec/lib/parser/return_spec.rb +17 -0
- data/spec/lib/parser/sclass_spec.rb +21 -0
- data/spec/lib/parser/string_spec.rb +276 -0
- data/spec/lib/parser/super_spec.rb +20 -0
- data/spec/lib/parser/unary_spec.rb +48 -0
- data/spec/lib/parser/undef_spec.rb +15 -0
- data/spec/lib/parser/unless_spec.rb +13 -0
- data/spec/lib/parser/variables_spec.rb +92 -0
- data/spec/lib/parser/while_spec.rb +15 -0
- data/spec/lib/parser/yield_spec.rb +20 -0
- data/spec/lib/path_reader_spec.rb +36 -0
- data/spec/lib/shared/path_finder_shared.rb +19 -0
- data/spec/lib/shared/path_reader_shared.rb +31 -0
- data/spec/lib/spec_helper.rb +9 -0
- data/spec/lib/sprockets/erb_spec.rb +38 -0
- data/spec/lib/sprockets/path_reader_spec.rb +41 -0
- data/spec/lib/sprockets/processor_spec.rb +67 -0
- data/spec/lib/sprockets/server_spec.rb +102 -0
- data/spec/lib/tilt/opal_spec.rb +37 -0
- data/spec/opal/compiler/irb_spec.rb +44 -0
- data/spec/opal/core/array/intersection_spec.rb +38 -0
- data/spec/opal/core/array/minus_spec.rb +38 -0
- data/spec/opal/core/array/select_spec.rb +14 -0
- data/spec/opal/core/array/set_range_to_array_spec.rb +7 -0
- data/spec/opal/core/array/union_spec.rb +38 -0
- data/spec/opal/core/array/uniq_spec.rb +49 -0
- data/spec/opal/core/date_spec.rb +177 -0
- data/spec/opal/core/enumerable/all_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/any_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/collect_break_spec.rb +13 -0
- data/spec/opal/core/enumerable/count_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/detect_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/drop_while_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/each_slice_break.rb +6 -0
- data/spec/opal/core/enumerable/each_with_index_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/each_with_object_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/find_all_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/find_index_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/grep_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/max_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/max_by_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/min_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/min_by_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/none_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/one_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/reduce_break_spec.rb +5 -0
- data/spec/opal/core/enumerable/take_while_break_spec.rb +5 -0
- data/spec/opal/core/exception_spec.rb +13 -0
- data/spec/opal/core/fixtures/class.rb +124 -0
- data/spec/opal/core/fixtures/class_variables.rb +0 -0
- data/spec/opal/core/fixtures/constants.rb +33 -0
- data/spec/opal/core/fixtures/require_tree_files/file 1.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_files/file 2.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_files/file 3.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_files/file 4.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_files/file 5.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +3 -0
- data/spec/opal/core/hash/has_value_spec.rb +13 -0
- data/spec/opal/core/hash/internals_spec.rb +332 -0
- data/spec/opal/core/kernel/Array_spec.rb +10 -0
- data/spec/opal/core/kernel/block_given_spec.rb +30 -0
- data/spec/opal/core/kernel/class_spec.rb +6 -0
- data/spec/opal/core/kernel/define_singleton_method_spec.rb +21 -0
- data/spec/opal/core/kernel/equal_value_spec.rb +12 -0
- data/spec/opal/core/kernel/extend_spec.rb +21 -0
- data/spec/opal/core/kernel/format_spec.rb +122 -0
- data/spec/opal/core/kernel/freeze_spec.rb +15 -0
- data/spec/opal/core/kernel/instance_eval_spec.rb +28 -0
- data/spec/opal/core/kernel/instance_variable_defined_spec.rb +15 -0
- data/spec/opal/core/kernel/instance_variable_get_spec.rb +14 -0
- data/spec/opal/core/kernel/instance_variable_set_spec.rb +10 -0
- data/spec/opal/core/kernel/loop_spec.rb +23 -0
- data/spec/opal/core/kernel/match_spec.rb +5 -0
- data/spec/opal/core/kernel/method_spec.rb +31 -0
- data/spec/opal/core/kernel/methods_spec.rb +25 -0
- data/spec/opal/core/kernel/nil_spec.rb +7 -0
- data/spec/opal/core/kernel/p_spec.rb +15 -0
- data/spec/opal/core/kernel/printf_spec.rb +11 -0
- data/spec/opal/core/kernel/proc_spec.rb +13 -0
- data/spec/opal/core/kernel/rand_spec.rb +23 -0
- data/spec/opal/core/kernel/require_tree_spec.rb +18 -0
- data/spec/opal/core/kernel/respond_to_spec.rb +41 -0
- data/spec/opal/core/kernel/send_spec.rb +56 -0
- data/spec/opal/core/kernel/sprintf_spec.rb +5 -0
- data/spec/opal/core/language/block_spec.rb +538 -0
- data/spec/opal/core/language/fixtures/array.rb +11 -0
- data/spec/opal/core/language/fixtures/block.rb +57 -0
- data/spec/opal/core/language/fixtures/break.rb +240 -0
- data/spec/opal/core/language/fixtures/ensure.rb +72 -0
- data/spec/opal/core/language/fixtures/literal_lambda.rb +7 -0
- data/spec/opal/core/language/fixtures/metaclass.rb +33 -0
- data/spec/opal/core/language/fixtures/module.rb +24 -0
- data/spec/opal/core/language/fixtures/next.rb +128 -0
- data/spec/opal/core/language/fixtures/return.rb +118 -0
- data/spec/opal/core/language/fixtures/send.rb +110 -0
- data/spec/opal/core/language/fixtures/send_1.9.rb +22 -0
- data/spec/opal/core/language/fixtures/super.rb +308 -0
- data/spec/opal/core/language/fixtures/variables.rb +58 -0
- data/spec/opal/core/language/fixtures/yield.rb +28 -0
- data/spec/opal/core/language/predefined_spec.rb +138 -0
- data/spec/opal/core/language/proc_spec.rb +263 -0
- data/spec/opal/core/language/regexp_spec.rb +20 -0
- data/spec/opal/core/language/send_spec.rb +225 -0
- data/spec/opal/core/language/string_spec.rb +44 -0
- data/spec/opal/core/language/variables_spec.rb +1366 -0
- data/spec/opal/core/language/versions/array_1.9.rb +39 -0
- 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 +20 -0
- data/spec/opal/core/language/versions/def_2_0_spec.rb +62 -0
- data/spec/opal/core/language/versions/hash_1.9.rb +18 -0
- data/spec/opal/core/language/versions/literal_lambda_1.9.rb +143 -0
- data/spec/opal/core/language/versions/not_1.9.rb +22 -0
- data/spec/opal/core/language/versions/send_1.9.rb +241 -0
- data/spec/opal/core/language/versions/symbol_1.9.rb +15 -0
- data/spec/opal/core/language/versions/variables_1.9.rb +8 -0
- data/spec/opal/core/language_spec.rb +23 -0
- data/spec/opal/core/method/to_proc_spec.rb +28 -0
- data/spec/opal/core/module/alias_method_spec.rb +28 -0
- data/spec/opal/core/module/ancestors_spec.rb +11 -0
- data/spec/opal/core/module/append_features_spec.rb +14 -0
- data/spec/opal/core/module/attr_accessor_spec.rb +26 -0
- data/spec/opal/core/module/const_defined_spec.rb +85 -0
- data/spec/opal/core/module/const_get_spec.rb +85 -0
- data/spec/opal/core/module/const_missing_spec.rb +17 -0
- data/spec/opal/core/module/const_set_spec.rb +64 -0
- data/spec/opal/core/module/constants_spec.rb +49 -0
- data/spec/opal/core/module/fixtures/classes.rb +434 -0
- data/spec/opal/core/module/method_defined_spec.rb +48 -0
- data/spec/opal/core/module/module_function_spec.rb +25 -0
- data/spec/opal/core/module/name_spec.rb +52 -0
- data/spec/opal/core/module/public_method_defined_spec.rb +18 -0
- data/spec/opal/core/module/remove_const_spec.rb +22 -0
- data/spec/opal/core/module/undef_method_spec.rb +66 -0
- data/spec/opal/core/numeric/bit_and_spec.rb +7 -0
- data/spec/opal/core/numeric/bit_or_spec.rb +8 -0
- data/spec/opal/core/numeric/bit_xor_spec.rb +6 -0
- data/spec/opal/core/numeric/ceil_spec.rb +8 -0
- data/spec/opal/core/numeric/chr_spec.rb +8 -0
- data/spec/opal/core/numeric/comparison_spec.rb +24 -0
- data/spec/opal/core/numeric/complement_spec.rb +8 -0
- data/spec/opal/core/numeric/divide_spec.rb +10 -0
- data/spec/opal/core/numeric/eql_spec.rb +9 -0
- data/spec/opal/core/numeric/exponent_spec.rb +33 -0
- data/spec/opal/core/numeric/floor_spec.rb +8 -0
- data/spec/opal/core/numeric/gt_spec.rb +11 -0
- data/spec/opal/core/numeric/gte_spec.rb +12 -0
- data/spec/opal/core/numeric/integer_spec.rb +9 -0
- data/spec/opal/core/numeric/left_shift_spec.rb +21 -0
- data/spec/opal/core/numeric/lt_spec.rb +11 -0
- data/spec/opal/core/numeric/lte_spec.rb +12 -0
- data/spec/opal/core/numeric/minus_spec.rb +8 -0
- data/spec/opal/core/numeric/modulo_spec.rb +19 -0
- data/spec/opal/core/numeric/multiply_spec.rb +9 -0
- data/spec/opal/core/numeric/next_spec.rb +9 -0
- data/spec/opal/core/numeric/ord_spec.rb +9 -0
- data/spec/opal/core/numeric/plus_spec.rb +8 -0
- data/spec/opal/core/numeric/pred_spec.rb +7 -0
- data/spec/opal/core/numeric/right_shift_spec.rb +25 -0
- data/spec/opal/core/numeric/step_spec.rb +11 -0
- data/spec/opal/core/numeric/succ_spec.rb +9 -0
- data/spec/opal/core/numeric/times_spec.rb +36 -0
- data/spec/opal/core/numeric/to_f_spec.rb +7 -0
- data/spec/opal/core/numeric/to_i_spec.rb +7 -0
- data/spec/opal/core/numeric/to_json_spec.rb +8 -0
- data/spec/opal/core/numeric/to_s_spec.rb +26 -0
- data/spec/opal/core/numeric/uminus_spec.rb +9 -0
- data/spec/opal/core/numeric/upto_spec.rb +19 -0
- data/spec/opal/core/numeric/zero_spec.rb +7 -0
- data/spec/opal/core/object_id_spec.rb +56 -0
- data/spec/opal/core/proc/call_spec.rb +21 -0
- data/spec/opal/core/proc/element_reference_spec.rb +21 -0
- data/spec/opal/core/proc/proc_tricks_spec.rb +7 -0
- data/spec/opal/core/runtime/begin_spec.rb +39 -0
- data/spec/opal/core/runtime/block_send_spec.rb +28 -0
- data/spec/opal/core/runtime/block_spec.rb +23 -0
- data/spec/opal/core/runtime/bridged_classes_spec.rb +111 -0
- data/spec/opal/core/runtime/constants_spec.rb +13 -0
- data/spec/opal/core/runtime/donate_spec.rb +53 -0
- data/spec/opal/core/runtime/eval_spec.rb +5 -0
- data/spec/opal/core/runtime/main_methods_spec.rb +27 -0
- data/spec/opal/core/runtime/method_missing_spec.rb +62 -0
- data/spec/opal/core/runtime/method_spec.rb +31 -0
- data/spec/opal/core/runtime/operator_call_spec.rb +13 -0
- data/spec/opal/core/runtime/paren_spec.rb +14 -0
- data/spec/opal/core/runtime/rescue_spec.rb +38 -0
- data/spec/opal/core/runtime/return_spec.rb +38 -0
- data/spec/opal/core/runtime/send_spec.rb +34 -0
- data/spec/opal/core/runtime/singleton_class_spec.rb +13 -0
- data/spec/opal/core/runtime/super_spec.rb +212 -0
- data/spec/opal/core/runtime/truthy_spec.rb +23 -0
- data/spec/opal/core/runtime/variables_spec.rb +20 -0
- data/spec/opal/core/runtime_spec.rb +58 -0
- data/spec/opal/core/source_map_spec.rb +15 -0
- data/spec/opal/core/string_spec.rb +11 -0
- data/spec/opal/stdlib/erb/erb_spec.rb +30 -0
- data/spec/opal/stdlib/erb/inline_block.opalerb +3 -0
- data/spec/opal/stdlib/erb/quoted.opalerb +1 -0
- data/spec/opal/stdlib/erb/simple.opalerb +1 -0
- data/spec/opal/stdlib/js_spec.rb +66 -0
- data/spec/opal/stdlib/json/ext_spec.rb +48 -0
- data/spec/opal/stdlib/json/parse_spec.rb +33 -0
- data/spec/opal/stdlib/native/alias_native_spec.rb +27 -0
- data/spec/opal/stdlib/native/each_spec.rb +13 -0
- data/spec/opal/stdlib/native/element_reference_spec.rb +16 -0
- data/spec/opal/stdlib/native/exposure_spec.rb +33 -0
- data/spec/opal/stdlib/native/ext_spec.rb +19 -0
- data/spec/opal/stdlib/native/initialize_spec.rb +17 -0
- data/spec/opal/stdlib/native/method_missing_spec.rb +51 -0
- data/spec/opal/stdlib/native/native_alias_spec.rb +19 -0
- data/spec/opal/stdlib/native/native_class_spec.rb +18 -0
- data/spec/opal/stdlib/native/native_module_spec.rb +13 -0
- data/spec/opal/stdlib/native/native_reader_spec.rb +22 -0
- data/spec/opal/stdlib/native/native_writer_spec.rb +30 -0
- data/spec/opal/stdlib/native/new_spec.rb +8 -0
- data/spec/opal/stdlib/promise/always_spec.rb +30 -0
- data/spec/opal/stdlib/promise/error_spec.rb +15 -0
- data/spec/opal/stdlib/promise/rescue_spec.rb +44 -0
- data/spec/opal/stdlib/promise/then_spec.rb +71 -0
- data/spec/opal/stdlib/promise/trace_spec.rb +52 -0
- data/spec/opal/stdlib/promise/value_spec.rb +15 -0
- data/spec/opal/stdlib/promise/when_spec.rb +34 -0
- data/spec/opal/stdlib/template/paths_spec.rb +10 -0
- data/spec/opal/stdlib/thread/mutex_spec.rb +40 -0
- data/spec/opal/stdlib/thread/thread_queue_spec.rb +32 -0
- data/spec/opal/stdlib/thread/thread_spec.rb +60 -0
- data/spec/rubyspecs +144 -0
- data/spec/spec_helper.rb +53 -0
- data/spec/support/mspec_rspec_adapter.rb +33 -0
- data/spec/support/parser_helpers.rb +37 -0
- data/stdlib/README.md +3 -0
- data/stdlib/base64.rb +152 -0
- data/stdlib/benchmark.rb +557 -0
- data/stdlib/buffer.rb +41 -0
- data/stdlib/buffer/array.rb +66 -0
- data/stdlib/buffer/view.rb +70 -0
- data/stdlib/date.rb +248 -0
- data/stdlib/delegate.rb +29 -0
- data/stdlib/dir.rb +1 -0
- data/stdlib/encoding.rb +170 -0
- data/stdlib/enumerator.rb +1 -0
- data/stdlib/erb.rb +16 -0
- data/stdlib/file.rb +1 -0
- data/stdlib/fileutils.rb +0 -0
- data/stdlib/forwardable.rb +71 -0
- data/stdlib/iconv.rb +0 -0
- data/stdlib/js.rb +56 -0
- data/stdlib/json.rb +190 -0
- data/stdlib/math.rb +370 -0
- data/stdlib/native.rb +530 -0
- data/stdlib/nodejs.rb +7 -0
- data/stdlib/nodejs/dir.rb +13 -0
- data/stdlib/nodejs/file.rb +98 -0
- data/stdlib/nodejs/fileutils.rb +26 -0
- data/stdlib/nodejs/io.rb +2 -0
- data/stdlib/nodejs/irb.rb +45 -0
- data/stdlib/nodejs/kernel.rb +33 -0
- data/stdlib/nodejs/node_modules/.bin/js-yaml +140 -0
- data/stdlib/nodejs/node_modules/glob/LICENSE +15 -0
- data/stdlib/nodejs/node_modules/glob/README.md +357 -0
- data/stdlib/nodejs/node_modules/glob/common.js +177 -0
- data/stdlib/nodejs/node_modules/glob/glob.js +649 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +17 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/LICENSE +15 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/README.md +37 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +44 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE +15 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md +36 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +52 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +51 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js +33 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +61 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +97 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/LICENSE +16 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/README.md +42 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +1 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +51 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +25 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +1 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +4 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +23 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/README.md +216 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +15 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +1181 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/minimatch.js +845 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +2 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +3 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +121 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +8 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +191 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +2 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +4 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +6 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +80 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +5 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +38 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +73 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +56 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +4 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +18 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +62 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +6 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +13 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +83 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +39 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +75 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +32 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +1075 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +182 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +9 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +10 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +24 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +15 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +16 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +10 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +13 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +7 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +50 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +60 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +399 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +45 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +274 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +27 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/README.md +51 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE +15 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +36 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +52 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +51 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +33 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +21 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +60 -0
- data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +23 -0
- data/stdlib/nodejs/node_modules/glob/package.json +72 -0
- data/stdlib/nodejs/node_modules/glob/sync.js +409 -0
- data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +277 -0
- data/stdlib/nodejs/node_modules/js-yaml/LICENSE +21 -0
- data/stdlib/nodejs/node_modules/js-yaml/README.md +288 -0
- data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +140 -0
- data/stdlib/nodejs/node_modules/js-yaml/bower.json +23 -0
- data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.js +3666 -0
- data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +3 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +102 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +18 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +31 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +22 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +18 -0
- data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +197 -0
- data/stdlib/nodejs/node_modules/js-yaml/index.js +7 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +39 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +62 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +554 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +25 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +1581 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +78 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +103 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +18 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +25 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +28 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +17 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +25 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +61 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +133 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +37 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +110 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +183 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +85 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +84 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +27 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +8 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +12 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +36 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +56 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +61 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +8 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +33 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +8 -0
- data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +98 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esparse +117 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esvalidate +177 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +115 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/LICENSE +21 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +239 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +36 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +22 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +59 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +13 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +33 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +28 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +23 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +49 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +35 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +270 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +1 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +146 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +55 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +47 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +40 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +48 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +50 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +43 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +27 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +26 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +148 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +50 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +481 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +14 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +50 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +54 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +75 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +1168 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +18 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +88 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +798 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +77 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +2 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +8 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +825 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +33 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +11 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +10 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +26 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +673 -0
- 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 +107 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +23 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +22 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +69 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +6 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +1415 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +62 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +73 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +117 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +177 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +3908 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +69 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +239 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +422 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +66 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +387 -0
- data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +20238 -0
- data/stdlib/nodejs/node_modules/js-yaml/package.json +83 -0
- data/stdlib/nodejs/package.json +6 -0
- data/stdlib/nodejs/require.rb +30 -0
- data/stdlib/nodejs/rubygems.rb +68 -0
- data/stdlib/nodejs/yaml.rb +11 -0
- data/stdlib/observer.rb +202 -0
- data/stdlib/opal-parser.rb +54 -0
- data/stdlib/opal-source-maps.rb +2 -0
- data/stdlib/ostruct.rb +69 -0
- data/stdlib/pathname.rb +55 -0
- data/stdlib/phantomjs.rb +3 -0
- data/stdlib/pp.rb +35 -0
- data/stdlib/promise.rb +427 -0
- data/stdlib/racc/parser.rb +215 -0
- data/stdlib/rbconfig.rb +18 -0
- data/stdlib/securerandom.rb +12 -0
- data/stdlib/set.rb +170 -0
- data/stdlib/singleton.rb +40 -0
- data/stdlib/source_map.rb +5 -0
- data/stdlib/source_map/map.rb +220 -0
- data/stdlib/source_map/mapping.rb +26 -0
- data/stdlib/source_map/offset.rb +88 -0
- data/stdlib/source_map/version.rb +3 -0
- data/stdlib/source_map/vlq.rb +98 -0
- data/stdlib/sourcemap.rb +1 -0
- data/stdlib/stringio.rb +181 -0
- data/stdlib/strscan.rb +166 -0
- data/stdlib/template.rb +46 -0
- data/stdlib/thread.rb +164 -0
- data/stdlib/time.rb +9 -0
- data/stdlib/yaml.rb +1 -0
- data/tasks/benchmarking.rake +88 -0
- data/tasks/building.rake +58 -0
- data/tasks/documenting.rake +37 -0
- data/tasks/github.rake +19 -0
- data/tasks/linting.rake +18 -0
- data/tasks/testing.rake +125 -0
- data/vendored-minitest/minitest.rb +780 -0
- data/vendored-minitest/minitest/assertions.rb +662 -0
- data/vendored-minitest/minitest/autorun.rb +12 -0
- data/vendored-minitest/minitest/benchmark.rb +426 -0
- data/vendored-minitest/minitest/expectations.rb +281 -0
- data/vendored-minitest/minitest/hell.rb +11 -0
- data/vendored-minitest/minitest/mock.rb +220 -0
- data/vendored-minitest/minitest/parallel.rb +65 -0
- data/vendored-minitest/minitest/pride.rb +4 -0
- data/vendored-minitest/minitest/pride_plugin.rb +142 -0
- data/vendored-minitest/minitest/spec.rb +310 -0
- data/vendored-minitest/minitest/test.rb +293 -0
- data/vendored-minitest/minitest/unit.rb +45 -0
- data/vendored-minitest/test/unit.rb +28 -0
- metadata +1058 -0
@@ -0,0 +1,158 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module Opal
|
4
|
+
class CLIOptions < OptionParser
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
@options = {}
|
8
|
+
|
9
|
+
self.banner = 'Usage: opal [options] -- [programfile]'
|
10
|
+
|
11
|
+
separator ''
|
12
|
+
|
13
|
+
on('-v', '--verbose', 'print version number, then turn on verbose mode') do
|
14
|
+
print_version
|
15
|
+
exit if ARGV.empty?
|
16
|
+
options[:verbose] = true
|
17
|
+
end
|
18
|
+
|
19
|
+
on('--verbose', 'turn on verbose mode (set $VERBOSE to true)') do
|
20
|
+
options[:verbose] = true
|
21
|
+
end
|
22
|
+
|
23
|
+
on('-d', '--debug', 'turn on debug mode (set $DEBUG to true)') do
|
24
|
+
options[:debug] = true
|
25
|
+
end
|
26
|
+
|
27
|
+
on('--version', 'Print the version') do
|
28
|
+
print_version
|
29
|
+
exit
|
30
|
+
end
|
31
|
+
|
32
|
+
on("-h", "--help", "Show this message") do
|
33
|
+
puts self
|
34
|
+
exit
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
section 'Basic Options:'
|
39
|
+
|
40
|
+
on('-I', '--include DIR',
|
41
|
+
'Append a load path (may be used more than once)') do |i|
|
42
|
+
options[:load_paths] ||= []
|
43
|
+
options[:load_paths] << i
|
44
|
+
end
|
45
|
+
|
46
|
+
on('-e', '--eval SOURCE', String,
|
47
|
+
'One line of script. Several -e\'s allowed. Omit [programfile]') do |source|
|
48
|
+
options[:evals] ||= []
|
49
|
+
options[:evals] << source
|
50
|
+
end
|
51
|
+
|
52
|
+
on('-r', '--require LIBRARY', String,
|
53
|
+
'Require the library before executing your script') do |library|
|
54
|
+
options[:requires] ||= []
|
55
|
+
options[:requires] << library
|
56
|
+
end
|
57
|
+
|
58
|
+
on('-s', '--stub FILE', String, 'Stubbed files will be compiled as empty files') do |stub|
|
59
|
+
options[:stubs] ||= []
|
60
|
+
options[:stubs] << stub
|
61
|
+
end
|
62
|
+
|
63
|
+
on('-p', '--preload FILE', String, 'Preloaded files will be prepared for dynamic requires') do |stub|
|
64
|
+
options[:preload] ||= []
|
65
|
+
options[:preload] << stub
|
66
|
+
end
|
67
|
+
|
68
|
+
on('-g', '--gem GEM_NAME', String, 'Adds the specified GEM_NAME to Opal\'s load path.') do |g|
|
69
|
+
options[:gems] ||= []
|
70
|
+
options[:gems] << g
|
71
|
+
end
|
72
|
+
|
73
|
+
section 'Running Options:'
|
74
|
+
|
75
|
+
on('--sexp', 'Show Sexps') do
|
76
|
+
options[:sexp] = true
|
77
|
+
end
|
78
|
+
|
79
|
+
on('-m', '--map', 'Show sourcemap') do
|
80
|
+
options[:map] = true
|
81
|
+
end
|
82
|
+
|
83
|
+
on('-c', '--compile', 'Compile to JavaScript') do
|
84
|
+
options[:compile] = true
|
85
|
+
end
|
86
|
+
|
87
|
+
on('-R', '--runner RUNNER', %w[nodejs server phantomjs applescript], 'Choose the runner: nodejs (default), server') do |runner|
|
88
|
+
options[:runner] = runner.to_sym
|
89
|
+
end
|
90
|
+
|
91
|
+
on('--server-port PORT', 'Set the port for the server runner (default port: 3000)') do |port|
|
92
|
+
options[:runner] = :server
|
93
|
+
options[:port] = port.to_i
|
94
|
+
end
|
95
|
+
|
96
|
+
on('--no-exit', 'Do not append a Kernel#exit at the end of file') do |no_exit|
|
97
|
+
options[:no_exit] = true
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
section 'Compilation Options:'
|
102
|
+
|
103
|
+
on('-M', '--no-method-missing', 'Enable/Disable method missing') do
|
104
|
+
options[:method_missing] = false
|
105
|
+
end
|
106
|
+
|
107
|
+
on('-O', '--no-opal', 'Enable/Disable implicit `require "opal"`') do
|
108
|
+
options[:skip_opal_require] = true
|
109
|
+
end
|
110
|
+
|
111
|
+
on('-A', '--arity-check', 'Enable arity check') do
|
112
|
+
options[:arity_check] = true
|
113
|
+
end
|
114
|
+
|
115
|
+
on('-V', 'Enable inline Operators') do
|
116
|
+
options[:inline_operators] = true
|
117
|
+
end
|
118
|
+
|
119
|
+
dynamic_require_levels = %w[error warning ignore]
|
120
|
+
on('-D', '--dynamic-require LEVEL', dynamic_require_levels,
|
121
|
+
'Set level of dynamic require severity.',
|
122
|
+
"(default: error, values: #{dynamic_require_levels.join(', ')})") do |level|
|
123
|
+
options[:dynamic_require_severity] = level.to_sym
|
124
|
+
end
|
125
|
+
|
126
|
+
on('-P', '--source-map [FILE]', 'Enable/Disable source map') do |file|
|
127
|
+
options[:source_map_enabled] = true
|
128
|
+
options[:source_map_file] = file if file
|
129
|
+
end
|
130
|
+
|
131
|
+
on('-F', '--file FILE', 'Set filename for compiled code') do |file|
|
132
|
+
options[:file] = file
|
133
|
+
end
|
134
|
+
|
135
|
+
on("--irb", "Enable IRB var mode") do
|
136
|
+
options[:irb] = true
|
137
|
+
end
|
138
|
+
|
139
|
+
separator ''
|
140
|
+
end
|
141
|
+
|
142
|
+
attr_reader :options
|
143
|
+
|
144
|
+
|
145
|
+
private
|
146
|
+
|
147
|
+
def print_version
|
148
|
+
require 'opal/version'
|
149
|
+
puts "Opal v#{Opal::VERSION}"
|
150
|
+
end
|
151
|
+
|
152
|
+
def section title
|
153
|
+
separator ''
|
154
|
+
separator title
|
155
|
+
separator ''
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'opal/cli_runners'
|
2
|
+
|
3
|
+
module Opal
|
4
|
+
module CliRunners
|
5
|
+
class AppleScript
|
6
|
+
def initialize(output)
|
7
|
+
unless system('which osalang > /dev/null')
|
8
|
+
raise MissingJavaScriptSupport, 'JavaScript Automation is only supported by OS X Yosemite and above.'
|
9
|
+
end
|
10
|
+
|
11
|
+
@output ||= output
|
12
|
+
end
|
13
|
+
attr_reader :output, :exit_status
|
14
|
+
|
15
|
+
def puts(*args)
|
16
|
+
output.puts(*args)
|
17
|
+
end
|
18
|
+
|
19
|
+
def run(code, argv)
|
20
|
+
require 'tempfile'
|
21
|
+
tempfile = Tempfile.new('opal-applescript-runner-')
|
22
|
+
# tempfile = File.new('opal-applescript-runner.js', 'w') # for debugging
|
23
|
+
tempfile.write code
|
24
|
+
tempfile.close
|
25
|
+
successful = system_with_output('osascript', '-l', 'JavaScript', tempfile.path , *argv)
|
26
|
+
|
27
|
+
rescue Errno::ENOENT
|
28
|
+
raise MissingAppleScript, 'AppleScript is only available on Mac OS X.'
|
29
|
+
end
|
30
|
+
|
31
|
+
# Let's support fake IO objects like StringIO
|
32
|
+
def system_with_output(env, *cmd)
|
33
|
+
if (io_output = IO.try_convert(output))
|
34
|
+
system(env,*cmd)
|
35
|
+
@exit_status = $?.exitstatus
|
36
|
+
return
|
37
|
+
end
|
38
|
+
|
39
|
+
if RUBY_PLATFORM == 'java'
|
40
|
+
# JRuby has issues in dealing with subprocesses (at least up to 1.7.15)
|
41
|
+
# @headius told me it's mostly fixed on master, but while we wait for it
|
42
|
+
# to ship here's a tempfile workaround.
|
43
|
+
require 'tempfile'
|
44
|
+
require 'shellwords'
|
45
|
+
tempfile = Tempfile.new('opal-applescript-output')
|
46
|
+
system(env,cmd.shelljoin+" > #{tempfile.path}")
|
47
|
+
@exit_status = $?.exitstatus
|
48
|
+
captured_output = File.read tempfile.path
|
49
|
+
tempfile.close
|
50
|
+
else
|
51
|
+
require 'open3'
|
52
|
+
captured_output, status = Open3.capture2(env,*cmd)
|
53
|
+
@exit_status = status.exitstatus
|
54
|
+
end
|
55
|
+
output.write captured_output
|
56
|
+
end
|
57
|
+
|
58
|
+
class MissingJavaScriptSupport < RunnerError
|
59
|
+
end
|
60
|
+
|
61
|
+
class MissingAppleScript < RunnerError
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'opal/cli_runners'
|
2
|
+
require 'opal/paths'
|
3
|
+
|
4
|
+
module Opal
|
5
|
+
module CliRunners
|
6
|
+
class Nodejs
|
7
|
+
def initialize(output)
|
8
|
+
@output ||= output
|
9
|
+
end
|
10
|
+
attr_reader :output, :exit_status
|
11
|
+
|
12
|
+
def puts(*args)
|
13
|
+
output.puts(*args)
|
14
|
+
end
|
15
|
+
|
16
|
+
def node_modules
|
17
|
+
File.expand_path('../stdlib/nodejs/node_modules', ::Opal.gem_dir)
|
18
|
+
end
|
19
|
+
|
20
|
+
def run(code, argv)
|
21
|
+
require 'tempfile'
|
22
|
+
tempfile = Tempfile.new('opal-nodejs-runner-')
|
23
|
+
# tempfile = File.new('opal-nodejs-runner.js', 'w') # for debugging
|
24
|
+
tempfile.write code
|
25
|
+
tempfile.close
|
26
|
+
system_with_output({'NODE_PATH' => node_modules}, 'node', tempfile.path , *argv)
|
27
|
+
rescue Errno::ENOENT
|
28
|
+
raise MissingNodeJS, 'Please install Node.js to be able to run Opal scripts.'
|
29
|
+
end
|
30
|
+
|
31
|
+
# Let's support fake IO objects like StringIO
|
32
|
+
def system_with_output(env, *cmd)
|
33
|
+
if IO.try_convert(output)
|
34
|
+
system(env,*cmd)
|
35
|
+
@exit_status = $?.exitstatus
|
36
|
+
return
|
37
|
+
end
|
38
|
+
|
39
|
+
if RUBY_PLATFORM == 'java'
|
40
|
+
# JRuby has issues in dealing with subprocesses (at least up to 1.7.15)
|
41
|
+
# @headius told me it's mostly fixed on master, but while we wait for it
|
42
|
+
# to ship here's a tempfile workaround.
|
43
|
+
require 'tempfile'
|
44
|
+
require 'shellwords'
|
45
|
+
tempfile = Tempfile.new('opal-node-output')
|
46
|
+
system(env,cmd.shelljoin+" > #{tempfile.path}")
|
47
|
+
@exit_status = $?.exitstatus
|
48
|
+
captured_output = File.read tempfile.path
|
49
|
+
tempfile.close
|
50
|
+
else
|
51
|
+
require 'open3'
|
52
|
+
captured_output, status = Open3.capture2(env,*cmd)
|
53
|
+
@exit_status = status.exitstatus
|
54
|
+
end
|
55
|
+
|
56
|
+
output.write captured_output
|
57
|
+
end
|
58
|
+
|
59
|
+
class MissingNodeJS < RunnerError
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
var page = require('webpage').create();
|
2
|
+
var fs = require('fs');
|
3
|
+
var system = require('system');
|
4
|
+
|
5
|
+
page.onConsoleMessage = function(msg) {
|
6
|
+
system.stdout.write(msg);
|
7
|
+
};
|
8
|
+
|
9
|
+
var opal_code = fs.read('/dev/stdin');
|
10
|
+
|
11
|
+
/*
|
12
|
+
* Exit phantom instance "safely" see - https://github.com/ariya/phantomjs/issues/12697
|
13
|
+
* https://github.com/nobuoka/gulp-qunit/commit/d242aff9b79de7543d956e294b2ee36eda4bac6c
|
14
|
+
*/
|
15
|
+
function phantom_exit(code) {
|
16
|
+
page.close();
|
17
|
+
setTimeout(function () { phantom.exit(code); }, 0);
|
18
|
+
}
|
19
|
+
|
20
|
+
page.onCallback = function(data) {
|
21
|
+
switch (data[0]) {
|
22
|
+
case 'exit':
|
23
|
+
var status = data[1] || 0;
|
24
|
+
phantom_exit(status);
|
25
|
+
case 'stdout':
|
26
|
+
system.stdout.write(data[1] || '');
|
27
|
+
break;
|
28
|
+
case 'stderr':
|
29
|
+
system.stderr.write(data[1] || '');
|
30
|
+
break;
|
31
|
+
default:
|
32
|
+
console.error('Unknown callback data: ', data);
|
33
|
+
}
|
34
|
+
};
|
35
|
+
|
36
|
+
page.content = '<!doctype html>'+
|
37
|
+
'<html>'+
|
38
|
+
' <head><meta charset="utf-8"/></head>'+
|
39
|
+
" <body><script>//<![CDATA[\n"+
|
40
|
+
opal_code+
|
41
|
+
" //]]></script>"+
|
42
|
+
' <script>callPhantom(["exit", 0]);</script></body>\n'+
|
43
|
+
' </body>'+
|
44
|
+
'</html>';
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'shellwords'
|
2
|
+
|
3
|
+
module Opal
|
4
|
+
module CliRunners
|
5
|
+
class Phantomjs
|
6
|
+
def initialize(output = $stdout)
|
7
|
+
@output = output
|
8
|
+
end
|
9
|
+
attr_reader :output, :exit_status
|
10
|
+
|
11
|
+
def run(code, argv)
|
12
|
+
unless argv.empty?
|
13
|
+
raise ArgumentError, 'Program arguments are not supported on the PhantomJS runner'
|
14
|
+
end
|
15
|
+
|
16
|
+
phantomjs = IO.popen(command, 'w', out: output) do |io|
|
17
|
+
io.write(code)
|
18
|
+
end
|
19
|
+
@exit_status = $?.exitstatus
|
20
|
+
end
|
21
|
+
|
22
|
+
def command
|
23
|
+
script_path = File.expand_path('../phantom.js', __FILE__)
|
24
|
+
"phantomjs #{script_path.shellescape}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'opal/cli_runners'
|
2
|
+
|
3
|
+
module Opal
|
4
|
+
module CliRunners
|
5
|
+
class Server
|
6
|
+
def initialize(output, port)
|
7
|
+
@output ||= output || $stdout
|
8
|
+
@port = port
|
9
|
+
end
|
10
|
+
attr_reader :output, :port, :server
|
11
|
+
|
12
|
+
def run(source, argv)
|
13
|
+
unless argv.empty?
|
14
|
+
raise ArgumentError, 'Program arguments are not supported on the PhantomJS runner'
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'rack'
|
18
|
+
require 'webrick'
|
19
|
+
require 'logger'
|
20
|
+
|
21
|
+
@server = Rack::Server.start(
|
22
|
+
:app => app(source),
|
23
|
+
:Port => port,
|
24
|
+
:AccessLog => [],
|
25
|
+
:Logger => Logger.new(output)
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
29
|
+
def exit_status
|
30
|
+
nil
|
31
|
+
end
|
32
|
+
|
33
|
+
def app(source)
|
34
|
+
lambda do |env|
|
35
|
+
case env['PATH_INFO']
|
36
|
+
when '/'
|
37
|
+
body = <<-HTML
|
38
|
+
<!doctype html>
|
39
|
+
<html>
|
40
|
+
<head>
|
41
|
+
<meta charset="utf-8"/>
|
42
|
+
<script src="/cli_runner.js"></script>
|
43
|
+
</head>
|
44
|
+
</html>
|
45
|
+
HTML
|
46
|
+
[200, {}, [body]]
|
47
|
+
when '/cli_runner.js'
|
48
|
+
[200, {'Content-Type' => 'text/javascript'}, [source]]
|
49
|
+
else
|
50
|
+
[404, {}, [body]]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,381 @@
|
|
1
|
+
require 'set'
|
2
|
+
require 'opal/parser'
|
3
|
+
require 'opal/fragment'
|
4
|
+
require 'opal/nodes'
|
5
|
+
|
6
|
+
module Opal
|
7
|
+
# Compile a string of ruby code into javascript.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
#
|
11
|
+
# Opal.compile "ruby_code"
|
12
|
+
# # => "string of javascript code"
|
13
|
+
#
|
14
|
+
# @see Opal::Compiler.new for compiler options
|
15
|
+
#
|
16
|
+
# @param source [String] ruby source
|
17
|
+
# @param options [Hash] compiler options
|
18
|
+
# @return [String] javascript code
|
19
|
+
#
|
20
|
+
def self.compile(source, options = {})
|
21
|
+
Compiler.new(source, options).compile
|
22
|
+
end
|
23
|
+
|
24
|
+
# {Opal::Compiler} is the main class used to compile ruby to javascript code.
|
25
|
+
# This class uses {Opal::Parser} to gather the sexp syntax tree for the ruby
|
26
|
+
# code, and then uses {Opal::Node} to step through the sexp to generate valid
|
27
|
+
# javascript.
|
28
|
+
#
|
29
|
+
# @example
|
30
|
+
# Opal::Compiler.new("ruby code").compile
|
31
|
+
# # => "javascript code"
|
32
|
+
#
|
33
|
+
# @example Accessing result
|
34
|
+
# compiler = Opal::Compiler.new("ruby_code")
|
35
|
+
# compiler.compile
|
36
|
+
# compiler.result # => "javascript code"
|
37
|
+
#
|
38
|
+
# @example Source Maps
|
39
|
+
# compiler = Opal::Compiler.new("")
|
40
|
+
# compiler.compile
|
41
|
+
# compiler.source_map # => #<SourceMap:>
|
42
|
+
#
|
43
|
+
class Compiler
|
44
|
+
# Generated code gets indented with two spaces on each scope
|
45
|
+
INDENT = ' '
|
46
|
+
|
47
|
+
# All compare method nodes - used to optimize performance of
|
48
|
+
# math comparisons
|
49
|
+
COMPARE = %w[< > <= >=]
|
50
|
+
|
51
|
+
# defines a compiler option, also creating method of form 'name?'
|
52
|
+
def self.compiler_option(name, default_value, options = {})
|
53
|
+
mid = options[:as]
|
54
|
+
valid_values = options[:valid_values]
|
55
|
+
define_method(mid || name) do
|
56
|
+
value = @options.fetch(name) { default_value }
|
57
|
+
if valid_values and not(valid_values.include?(value))
|
58
|
+
raise ArgumentError, "invalid value #{value.inspect} for option #{name.inspect} "+
|
59
|
+
"(valid values: #{valid_values.inspect})"
|
60
|
+
end
|
61
|
+
value
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# @!method file
|
66
|
+
#
|
67
|
+
# The filename to use for compiling this code. Used for __FILE__ directives
|
68
|
+
# as well as finding relative require()
|
69
|
+
#
|
70
|
+
# @return [String]
|
71
|
+
compiler_option :file, '(file)'
|
72
|
+
|
73
|
+
# @!method method_missing?
|
74
|
+
#
|
75
|
+
# adds method stubs for all used methods in file
|
76
|
+
#
|
77
|
+
# @return [Boolean]
|
78
|
+
compiler_option :method_missing, true, :as => :method_missing?
|
79
|
+
|
80
|
+
# @!method arity_check?
|
81
|
+
#
|
82
|
+
# adds an arity check to every method definition
|
83
|
+
#
|
84
|
+
# @return [Boolean]
|
85
|
+
compiler_option :arity_check, false, :as => :arity_check?
|
86
|
+
|
87
|
+
# @!method irb?
|
88
|
+
#
|
89
|
+
# compile top level local vars with support for irb style vars
|
90
|
+
compiler_option :irb, false, :as => :irb?
|
91
|
+
|
92
|
+
# @!method dynamic_require_severity
|
93
|
+
#
|
94
|
+
# how to handle dynamic requires (:error, :warning, :ignore)
|
95
|
+
compiler_option :dynamic_require_severity, :error, :valid_values => [:error, :warning, :ignore]
|
96
|
+
|
97
|
+
# @!method requirable?
|
98
|
+
#
|
99
|
+
# Prepare the code for future requires
|
100
|
+
compiler_option :requirable, false, :as => :requirable?
|
101
|
+
|
102
|
+
# @!method inline_operators?
|
103
|
+
#
|
104
|
+
# are operators compiled inline
|
105
|
+
compiler_option :inline_operators, true, :as => :inline_operators?
|
106
|
+
|
107
|
+
# @return [String] The compiled ruby code
|
108
|
+
attr_reader :result
|
109
|
+
|
110
|
+
# @return [Array] all [Opal::Fragment] used to produce result
|
111
|
+
attr_reader :fragments
|
112
|
+
|
113
|
+
# Current scope
|
114
|
+
attr_accessor :scope
|
115
|
+
|
116
|
+
# Current case_stmt
|
117
|
+
attr_reader :case_stmt
|
118
|
+
|
119
|
+
# Any content in __END__ special construct
|
120
|
+
attr_reader :eof_content
|
121
|
+
|
122
|
+
def initialize(source, options = {})
|
123
|
+
@source = source
|
124
|
+
@indent = ''
|
125
|
+
@unique = 0
|
126
|
+
@options = options
|
127
|
+
end
|
128
|
+
|
129
|
+
# Compile some ruby code to a string.
|
130
|
+
#
|
131
|
+
# @return [String] javascript code
|
132
|
+
def compile
|
133
|
+
@parser = Parser.new
|
134
|
+
|
135
|
+
@sexp = s(:top, @parser.parse(@source, self.file) || s(:nil))
|
136
|
+
@eof_content = @parser.lexer.eof_content
|
137
|
+
|
138
|
+
@fragments = process(@sexp).flatten
|
139
|
+
|
140
|
+
@result = @fragments.map(&:code).join('')
|
141
|
+
rescue => error
|
142
|
+
message = "An error occurred while compiling: #{self.file}\n#{error.message}"
|
143
|
+
raise error.class, message, error.backtrace
|
144
|
+
end
|
145
|
+
|
146
|
+
# Returns a source map that can be used in the browser to map back to
|
147
|
+
# original ruby code.
|
148
|
+
#
|
149
|
+
# @param source_file [String] optional source_file to reference ruby source
|
150
|
+
# @return [Opal::SourceMap]
|
151
|
+
def source_map(source_file = nil)
|
152
|
+
Opal::SourceMap.new(@fragments, source_file || self.file)
|
153
|
+
end
|
154
|
+
|
155
|
+
# Any helpers required by this file. Used by {Opal::Nodes::Top} to reference
|
156
|
+
# runtime helpers that are needed. These are used to minify resulting
|
157
|
+
# javascript by keeping a reference to helpers used.
|
158
|
+
#
|
159
|
+
# @return [Set<Symbol>]
|
160
|
+
def helpers
|
161
|
+
@helpers ||= Set.new([:breaker, :slice])
|
162
|
+
end
|
163
|
+
|
164
|
+
# Operator helpers
|
165
|
+
def operator_helpers
|
166
|
+
@operator_helpers ||= Set.new
|
167
|
+
end
|
168
|
+
|
169
|
+
# Method calls made in this file
|
170
|
+
def method_calls
|
171
|
+
@method_calls ||= Set.new
|
172
|
+
end
|
173
|
+
|
174
|
+
# This is called when a parsing/processing error occurs. This
|
175
|
+
# method simply appends the filename and curent line number onto
|
176
|
+
# the message and raises it.
|
177
|
+
def error(msg, line = nil)
|
178
|
+
raise SyntaxError, "#{msg} :#{file}:#{line}"
|
179
|
+
end
|
180
|
+
|
181
|
+
# This is called when a parsing/processing warning occurs. This
|
182
|
+
# method simply appends the filename and curent line number onto
|
183
|
+
# the message and issues a warning.
|
184
|
+
def warning(msg, line = nil)
|
185
|
+
warn "WARNING: #{msg} -- #{file}:#{line}"
|
186
|
+
end
|
187
|
+
|
188
|
+
# Instances of `Scope` can use this to determine the current
|
189
|
+
# scope indent. The indent is used to keep generated code easily
|
190
|
+
# readable.
|
191
|
+
def parser_indent
|
192
|
+
@indent
|
193
|
+
end
|
194
|
+
|
195
|
+
# Create a new sexp using the given parts. Even though this just
|
196
|
+
# returns an array, it must be used incase the internal structure
|
197
|
+
# of sexps does change.
|
198
|
+
def s(*parts)
|
199
|
+
Sexp.new(parts)
|
200
|
+
end
|
201
|
+
|
202
|
+
def fragment(str, sexp = nil)
|
203
|
+
Fragment.new(str, sexp)
|
204
|
+
end
|
205
|
+
|
206
|
+
# Used to generate a unique id name per file. These are used
|
207
|
+
# mainly to name method bodies for methods that use blocks.
|
208
|
+
def unique_temp
|
209
|
+
"TMP_#{@unique += 1}"
|
210
|
+
end
|
211
|
+
|
212
|
+
# Use the given helper
|
213
|
+
def helper(name)
|
214
|
+
self.helpers << name
|
215
|
+
end
|
216
|
+
|
217
|
+
# To keep code blocks nicely indented, this will yield a block after
|
218
|
+
# adding an extra layer of indent, and then returning the resulting
|
219
|
+
# code after reverting the indent.
|
220
|
+
def indent(&block)
|
221
|
+
indent = @indent
|
222
|
+
@indent += INDENT
|
223
|
+
@space = "\n#@indent"
|
224
|
+
res = yield
|
225
|
+
@indent = indent
|
226
|
+
@space = "\n#@indent"
|
227
|
+
res
|
228
|
+
end
|
229
|
+
|
230
|
+
# Temporary varibales will be needed from time to time in the
|
231
|
+
# generated code, and this method will assign (or reuse) on
|
232
|
+
# while the block is yielding, and queue it back up once it is
|
233
|
+
# finished. Variables are queued once finished with to save the
|
234
|
+
# numbers of variables needed at runtime.
|
235
|
+
def with_temp(&block)
|
236
|
+
tmp = @scope.new_temp
|
237
|
+
res = yield tmp
|
238
|
+
@scope.queue_temp tmp
|
239
|
+
res
|
240
|
+
end
|
241
|
+
|
242
|
+
# Used when we enter a while statement. This pushes onto the current
|
243
|
+
# scope's while stack so we know how to handle break, next etc.
|
244
|
+
def in_while
|
245
|
+
return unless block_given?
|
246
|
+
@while_loop = @scope.push_while
|
247
|
+
result = yield
|
248
|
+
@scope.pop_while
|
249
|
+
|
250
|
+
result
|
251
|
+
end
|
252
|
+
|
253
|
+
def in_case
|
254
|
+
return unless block_given?
|
255
|
+
old = @case_stmt
|
256
|
+
@case_stmt = {}
|
257
|
+
yield
|
258
|
+
@case_stmt = old
|
259
|
+
end
|
260
|
+
|
261
|
+
# Returns true if the parser is curently handling a while sexp,
|
262
|
+
# false otherwise.
|
263
|
+
def in_while?
|
264
|
+
@scope.in_while?
|
265
|
+
end
|
266
|
+
|
267
|
+
# Process the given sexp by creating a node instance, based on its type,
|
268
|
+
# and compiling it to fragments.
|
269
|
+
def process(sexp, level = :expr)
|
270
|
+
return fragment('') if sexp == nil
|
271
|
+
|
272
|
+
if handler = handlers[sexp.type]
|
273
|
+
return handler.new(sexp, level, self).compile_to_fragments
|
274
|
+
else
|
275
|
+
raise "Unsupported sexp: #{sexp.type}"
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
def handlers
|
280
|
+
@handlers ||= Opal::Nodes::Base.handlers
|
281
|
+
end
|
282
|
+
|
283
|
+
# An array of requires used in this file
|
284
|
+
def requires
|
285
|
+
@requires ||= []
|
286
|
+
end
|
287
|
+
|
288
|
+
# An array of trees required in this file
|
289
|
+
# (typically by calling #require_tree)
|
290
|
+
def required_trees
|
291
|
+
@required_trees ||= []
|
292
|
+
end
|
293
|
+
|
294
|
+
# The last sexps in method bodies, for example, need to be returned
|
295
|
+
# in the compiled javascript. Due to syntax differences between
|
296
|
+
# javascript any ruby, some sexps need to be handled specially. For
|
297
|
+
# example, `if` statemented cannot be returned in javascript, so
|
298
|
+
# instead the "truthy" and "falsy" parts of the if statement both
|
299
|
+
# need to be returned instead.
|
300
|
+
#
|
301
|
+
# Sexps that need to be returned are passed to this method, and the
|
302
|
+
# alterned/new sexps are returned and should be used instead. Most
|
303
|
+
# sexps can just be added into a `s(:return) sexp`, so that is the
|
304
|
+
# default action if no special case is required.
|
305
|
+
def returns(sexp)
|
306
|
+
return returns s(:nil) unless sexp
|
307
|
+
|
308
|
+
case sexp.type
|
309
|
+
when :break, :next, :redo
|
310
|
+
sexp
|
311
|
+
when :yield
|
312
|
+
sexp[0] = :returnable_yield
|
313
|
+
sexp
|
314
|
+
when :scope
|
315
|
+
sexp[1] = returns sexp[1]
|
316
|
+
sexp
|
317
|
+
when :block
|
318
|
+
if sexp.length > 1
|
319
|
+
sexp[-1] = returns sexp[-1]
|
320
|
+
else
|
321
|
+
sexp << returns(s(:nil))
|
322
|
+
end
|
323
|
+
sexp
|
324
|
+
when :when
|
325
|
+
sexp[2] = returns(sexp[2])
|
326
|
+
sexp
|
327
|
+
when :rescue
|
328
|
+
sexp[1] = returns sexp[1]
|
329
|
+
|
330
|
+
if sexp[2] and sexp[2][0] == :resbody
|
331
|
+
if sexp[2][2]
|
332
|
+
sexp[2][2] = returns sexp[2][2]
|
333
|
+
else
|
334
|
+
sexp[2][2] = returns s(:nil)
|
335
|
+
end
|
336
|
+
end
|
337
|
+
sexp
|
338
|
+
when :ensure
|
339
|
+
sexp[1] = returns sexp[1]
|
340
|
+
sexp
|
341
|
+
when :begin
|
342
|
+
sexp[1] = returns sexp[1]
|
343
|
+
sexp
|
344
|
+
when :rescue_mod
|
345
|
+
sexp[1] = returns sexp[1]
|
346
|
+
sexp[2] = returns sexp[2]
|
347
|
+
sexp
|
348
|
+
when :while
|
349
|
+
# sexp[2] = returns(sexp[2])
|
350
|
+
sexp
|
351
|
+
when :return, :js_return
|
352
|
+
sexp
|
353
|
+
when :xstr
|
354
|
+
sexp[1] = "return #{sexp[1]};" unless /return|;/ =~ sexp[1]
|
355
|
+
sexp
|
356
|
+
when :dxstr
|
357
|
+
sexp[1] = "return #{sexp[1]}" unless /return|;|\n/ =~ sexp[1]
|
358
|
+
sexp
|
359
|
+
when :if
|
360
|
+
sexp[2] = returns(sexp[2] || s(:nil))
|
361
|
+
sexp[3] = returns(sexp[3] || s(:nil))
|
362
|
+
sexp
|
363
|
+
else
|
364
|
+
s(:js_return, sexp).tap { |s|
|
365
|
+
s.source = sexp.source
|
366
|
+
}
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
370
|
+
def handle_block_given_call(sexp)
|
371
|
+
@scope.uses_block!
|
372
|
+
if @scope.block_name
|
373
|
+
fragment("(#{@scope.block_name} !== nil)", sexp)
|
374
|
+
elsif scope = @scope.find_parent_def and scope.block_name
|
375
|
+
fragment("(#{scope.block_name} !== nil)", sexp)
|
376
|
+
else
|
377
|
+
fragment("false", sexp)
|
378
|
+
end
|
379
|
+
end
|
380
|
+
end
|
381
|
+
end
|