opal-cj 0.7.0.beta1
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 +10 -0
- data/.gitmodules +27 -0
- data/.rspec +3 -0
- data/.spectator +2 -0
- data/.spectator-mspec +3 -0
- data/.travis.yml +45 -0
- data/CHANGELOG.md +406 -0
- data/CONTRIBUTING.md +41 -0
- data/Gemfile +27 -0
- data/Guardfile +77 -0
- data/LICENSE +19 -0
- data/README.md +178 -0
- data/Rakefile +116 -0
- data/benchmarks/operators.rb +11 -0
- data/bin/opal +22 -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/examples/rack/Gemfile +3 -0
- data/examples/rack/app/application.rb +13 -0
- data/examples/rack/app/user.rb +21 -0
- data/examples/rack/config.ru +7 -0
- data/examples/rack/index.html.erb +10 -0
- data/examples/sinatra/Gemfile +4 -0
- data/examples/sinatra/app/application.rb +7 -0
- data/examples/sinatra/config.ru +28 -0
- data/lib/mspec/opal/main.rb.erb +9 -0
- data/lib/mspec/opal/rake_task.rb +278 -0
- data/lib/mspec/opal/runner.rb +206 -0
- data/lib/mspec/opal/sprockets.js +57 -0
- data/lib/opal.rb +11 -0
- data/lib/opal/builder.rb +135 -0
- data/lib/opal/builder_processors.rb +165 -0
- data/lib/opal/cli.rb +145 -0
- data/lib/opal/cli_options.rb +149 -0
- data/lib/opal/cli_runners.rb +10 -0
- data/lib/opal/cli_runners/nodejs.rb +56 -0
- data/lib/opal/cli_runners/phantom.js +35 -0
- data/lib/opal/cli_runners/phantomjs.rb +28 -0
- data/lib/opal/cli_runners/server.rb +54 -0
- data/lib/opal/compiler.rb +307 -0
- data/lib/opal/erb.rb +64 -0
- data/lib/opal/fragment.rb +41 -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 +283 -0
- data/lib/opal/nodes/call_special.rb +178 -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 +157 -0
- data/lib/opal/nodes/defined.rb +113 -0
- data/lib/opal/nodes/definitions.rb +168 -0
- data/lib/opal/nodes/for.rb +35 -0
- data/lib/opal/nodes/hash.rb +67 -0
- data/lib/opal/nodes/helpers.rb +114 -0
- data/lib/opal/nodes/if.rb +67 -0
- data/lib/opal/nodes/iter.rb +131 -0
- data/lib/opal/nodes/literal.rb +230 -0
- data/lib/opal/nodes/logic.rb +217 -0
- data/lib/opal/nodes/masgn.rb +62 -0
- data/lib/opal/nodes/module.rb +46 -0
- data/lib/opal/nodes/rescue.rb +135 -0
- data/lib/opal/nodes/runtime_helpers.rb +45 -0
- data/lib/opal/nodes/scope.rb +293 -0
- data/lib/opal/nodes/singleton_class.rb +25 -0
- data/lib/opal/nodes/super.rb +97 -0
- data/lib/opal/nodes/top.rb +101 -0
- data/lib/opal/nodes/variables.rb +158 -0
- data/lib/opal/nodes/while.rb +65 -0
- data/lib/opal/nodes/yield.rb +95 -0
- data/lib/opal/parser.rb +658 -0
- data/lib/opal/parser/grammar.rb +5452 -0
- data/lib/opal/parser/grammar.y +1684 -0
- data/lib/opal/parser/keywords.rb +66 -0
- data/lib/opal/parser/lexer.rb +1208 -0
- data/lib/opal/parser/parser_scope.rb +25 -0
- data/lib/opal/parser/sexp.rb +75 -0
- data/lib/opal/path_reader.rb +28 -0
- data/lib/opal/paths.rb +38 -0
- data/lib/opal/source_map.rb +70 -0
- data/lib/opal/sprockets.rb +4 -0
- data/lib/opal/sprockets/cache_key_fix.rb +17 -0
- data/lib/opal/sprockets/environment.rb +37 -0
- data/lib/opal/sprockets/erb.rb +37 -0
- data/lib/opal/sprockets/path_reader.rb +34 -0
- data/lib/opal/sprockets/processor.rb +124 -0
- data/lib/opal/sprockets/server.rb +180 -0
- data/lib/opal/util.rb +64 -0
- data/lib/opal/version.rb +3 -0
- data/opal.gemspec +36 -0
- data/opal/README.md +6 -0
- data/opal/corelib/array.rb +1556 -0
- data/opal/corelib/array/inheritance.rb +113 -0
- data/opal/corelib/basic_object.rb +73 -0
- data/opal/corelib/boolean.rb +41 -0
- data/opal/corelib/class.rb +55 -0
- data/opal/corelib/comparable.rb +56 -0
- data/opal/corelib/complex.rb +3 -0
- data/opal/corelib/dir.rb +20 -0
- data/opal/corelib/enumerable.rb +1132 -0
- data/opal/corelib/enumerator.rb +422 -0
- data/opal/corelib/error.rb +63 -0
- data/opal/corelib/file.rb +56 -0
- data/opal/corelib/hash.rb +728 -0
- data/opal/corelib/helpers.rb +102 -0
- data/opal/corelib/io.rb +59 -0
- data/opal/corelib/kernel.rb +569 -0
- data/opal/corelib/main.rb +7 -0
- data/opal/corelib/match_data.rb +114 -0
- data/opal/corelib/method.rb +58 -0
- data/opal/corelib/module.rb +462 -0
- data/opal/corelib/nil_class.rb +62 -0
- data/opal/corelib/numeric.rb +532 -0
- data/opal/corelib/proc.rb +52 -0
- data/opal/corelib/range.rb +116 -0
- data/opal/corelib/rational.rb +3 -0
- data/opal/corelib/regexp.rb +133 -0
- data/opal/corelib/runtime.js +1240 -0
- data/opal/corelib/string.rb +1212 -0
- data/opal/corelib/string/inheritance.rb +78 -0
- data/opal/corelib/struct.rb +141 -0
- data/opal/corelib/time.rb +584 -0
- data/opal/corelib/variables.rb +24 -0
- data/opal/opal.rb +32 -0
- data/package.json +9 -0
- data/spec/filters/bugs/array.rb +232 -0
- data/spec/filters/bugs/basic_object.rb +14 -0
- data/spec/filters/bugs/class.rb +21 -0
- data/spec/filters/bugs/enumerable.rb +69 -0
- data/spec/filters/bugs/enumerator.rb +3 -0
- data/spec/filters/bugs/hash.rb +128 -0
- data/spec/filters/bugs/kernel.rb +10 -0
- data/spec/filters/bugs/language.rb +415 -0
- data/spec/filters/bugs/math.rb +95 -0
- data/spec/filters/bugs/module.rb +14 -0
- data/spec/filters/bugs/nil.rb +7 -0
- data/spec/filters/bugs/numeric.rb +20 -0
- data/spec/filters/bugs/opal.rb +14 -0
- data/spec/filters/bugs/regexp.rb +11 -0
- data/spec/filters/bugs/set.rb +7 -0
- data/spec/filters/bugs/singleton.rb +6 -0
- data/spec/filters/bugs/string.rb +360 -0
- data/spec/filters/bugs/stringscanner.rb +22 -0
- data/spec/filters/bugs/struct.rb +45 -0
- data/spec/filters/bugs/time.rb +177 -0
- data/spec/filters/bugs/unknown.rb +11 -0
- data/spec/filters/unsupported/encoding.rb +95 -0
- data/spec/filters/unsupported/enumerator.rb +14 -0
- data/spec/filters/unsupported/float.rb +5 -0
- data/spec/filters/unsupported/frozen.rb +90 -0
- data/spec/filters/unsupported/hash_compare_by_identity.rb +16 -0
- data/spec/filters/unsupported/integer_size.rb +7 -0
- data/spec/filters/unsupported/method_added.rb +10 -0
- data/spec/filters/unsupported/mutable_strings.rb +361 -0
- data/spec/filters/unsupported/private_constants.rb +30 -0
- data/spec/filters/unsupported/private_methods.rb +44 -0
- data/spec/filters/unsupported/random.rb +4 -0
- data/spec/filters/unsupported/ruby_exe.rb +5 -0
- data/spec/filters/unsupported/tainted.rb +155 -0
- data/spec/filters/unsupported/time.rb +21 -0
- data/spec/filters/unsupported/trusted.rb +80 -0
- data/spec/lib/builder_processors_spec.rb +27 -0
- data/spec/lib/builder_spec.rb +66 -0
- data/spec/lib/cli_spec.rb +134 -0
- data/spec/lib/compiler_spec.rb +197 -0
- data/spec/lib/dependency_resolver_spec.rb +40 -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_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/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 +139 -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 +61 -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 +27 -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 +24 -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/environment_spec.rb +30 -0
- data/spec/lib/sprockets/erb_spec.rb +25 -0
- data/spec/lib/sprockets/path_reader_spec.rb +25 -0
- data/spec/lib/sprockets/processor_spec.rb +35 -0
- data/spec/lib/sprockets/server_spec.rb +20 -0
- data/spec/opal/compiler/irb_spec.rb +44 -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/date_spec.rb +122 -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/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/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 +7 -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 +85 -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/symbol_spec.rb +40 -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/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/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/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 +64 -0
- data/spec/opal/core/runtime/constants_spec.rb +13 -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/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/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_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/error_spec.rb +15 -0
- data/spec/opal/stdlib/promise/rescue_spec.rb +35 -0
- data/spec/opal/stdlib/promise/then_spec.rb +54 -0
- data/spec/opal/stdlib/promise/trace_spec.rb +35 -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 +329 -0
- data/spec/spec_helper.rb +42 -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 +10 -0
- data/stdlib/buffer.rb +40 -0
- data/stdlib/buffer/array.rb +66 -0
- data/stdlib/buffer/view.rb +70 -0
- data/stdlib/date.rb +170 -0
- data/stdlib/delegate.rb +29 -0
- data/stdlib/dir.rb +1 -0
- data/stdlib/encoding.rb +166 -0
- data/stdlib/enumerator.rb +1 -0
- data/stdlib/erb.rb +16 -0
- data/stdlib/file.rb +1 -0
- data/stdlib/forwardable.rb +71 -0
- data/stdlib/json.rb +182 -0
- data/stdlib/math.rb +370 -0
- data/stdlib/native.rb +530 -0
- data/stdlib/nodejs.rb +5 -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/process.rb +16 -0
- data/stdlib/nodejs/require.rb +32 -0
- data/stdlib/nodejs/rubygems.rb +68 -0
- data/stdlib/nodejs/runtime.rb +25 -0
- data/stdlib/nodejs/yaml.rb +11 -0
- data/stdlib/observer.rb +202 -0
- data/stdlib/opal-parser.rb +53 -0
- data/stdlib/opal-source-maps.rb +2 -0
- data/stdlib/ostruct.rb +69 -0
- data/stdlib/pathname.rb +31 -0
- data/stdlib/phantomjs.rb +8 -0
- data/stdlib/pp.rb +12 -0
- data/stdlib/process.rb +10 -0
- data/stdlib/promise.rb +300 -0
- data/stdlib/racc/parser.rb +215 -0
- data/stdlib/rbconfig.rb +20 -0
- data/stdlib/securerandom.rb +12 -0
- data/stdlib/set.rb +116 -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 +155 -0
- data/stdlib/template.rb +46 -0
- data/stdlib/thread.rb +160 -0
- data/stdlib/time.rb +9 -0
- data/tasks/github.rake +19 -0
- metadata +690 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module VariablesSpecs
|
|
2
|
+
class ParAsgn
|
|
3
|
+
attr_accessor :x
|
|
4
|
+
|
|
5
|
+
def initialize
|
|
6
|
+
@x = 0
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def inc
|
|
10
|
+
@x += 1
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def to_ary
|
|
14
|
+
[1,2,3,4]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class OpAsgn
|
|
19
|
+
attr_accessor :a, :b, :side_effect
|
|
20
|
+
|
|
21
|
+
def do_side_effect
|
|
22
|
+
self.side_effect = true
|
|
23
|
+
return @a
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def do_more_side_effects
|
|
27
|
+
@a += 5
|
|
28
|
+
self
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def do_bool_side_effects
|
|
32
|
+
@b += 1
|
|
33
|
+
self
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
class Hashalike
|
|
38
|
+
def [](k) k end
|
|
39
|
+
def []=(k, v) [k, v] end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.reverse_foo(a, b)
|
|
43
|
+
return b, a
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
class ArrayLike
|
|
47
|
+
def initialize(array)
|
|
48
|
+
@array = array
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def to_a
|
|
52
|
+
@array
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
class ArraySubclass < Array
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module YieldSpecs
|
|
2
|
+
class Yielder
|
|
3
|
+
def z
|
|
4
|
+
yield
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def ze(&block)
|
|
8
|
+
block = proc { block }
|
|
9
|
+
yield
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def s(a)
|
|
13
|
+
yield(a)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def m(a, b, c)
|
|
17
|
+
yield(a, b, c)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def r(a)
|
|
21
|
+
yield(*a)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def rs(a, b, c)
|
|
25
|
+
yield(a, b, *c)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
describe "predefined global $~" do
|
|
2
|
+
it "is set to contain the MatchData object of the last match if successful" do
|
|
3
|
+
md = /foo/.match 'foo'
|
|
4
|
+
$~.should be_kind_of(MatchData)
|
|
5
|
+
$~.object_id.should == md.object_id
|
|
6
|
+
|
|
7
|
+
/bar/ =~ 'bar'
|
|
8
|
+
$~.should be_kind_of(MatchData)
|
|
9
|
+
$~.object_id.should_not == md.object_id
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "is set to nil if the last match was unsuccessful" do
|
|
13
|
+
/foo/ =~ 'foo'
|
|
14
|
+
$~.nil?.should == false
|
|
15
|
+
|
|
16
|
+
/foo/ =~ 'bar'
|
|
17
|
+
$~.nil?.should == true
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "predefined global $:" do
|
|
22
|
+
it "is initialized to an array of strings" do
|
|
23
|
+
$:.is_a?(Array).should == true
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "predefined standard objects" do
|
|
28
|
+
it "includes ARGF" do
|
|
29
|
+
Object.const_defined?(:ARGF).should == true
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "includes ARGV" do
|
|
33
|
+
Object.const_defined?(:ARGV).should == true
|
|
34
|
+
ARGV.respond_to?(:[]).should == true
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# already checked in spec_helper
|
|
38
|
+
#it "includes a hash-like object ENV" do
|
|
39
|
+
# Object.const_defined?(:ENV).should == true
|
|
40
|
+
# ENV.respond_to?(:[]).should == true
|
|
41
|
+
#end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe "The predefined global constants" do
|
|
45
|
+
it "includes TRUE" do
|
|
46
|
+
Object.const_defined?(:TRUE).should == true
|
|
47
|
+
TRUE.should be_true
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "includes FALSE" do
|
|
51
|
+
Object.const_defined?(:FALSE).should == true
|
|
52
|
+
FALSE.should be_false
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "includes NIL" do
|
|
56
|
+
Object.const_defined?(:NIL).should == true
|
|
57
|
+
NIL.should be_nil
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "includes STDIN" do
|
|
61
|
+
Object.const_defined?(:STDIN).should == true
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "includes STDOUT" do
|
|
65
|
+
Object.const_defined?(:STDOUT).should == true
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "includes STDERR" do
|
|
69
|
+
Object.const_defined?(:STDERR).should == true
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "includes RUBY_VERSION" do
|
|
73
|
+
Object.const_defined?(:RUBY_VERSION).should == true
|
|
74
|
+
RUBY_VERSION.should == "2.1.1"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "includes RUBY_RELEASE_DATE" do
|
|
78
|
+
Object.const_defined?(:RUBY_RELEASE_DATE).should == true
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "includes RUBY_PLATFORM" do
|
|
82
|
+
Object.const_defined?(:RUBY_PLATFORM).should == true
|
|
83
|
+
RUBY_PLATFORM.should == "opal"
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
describe "A Proc" do
|
|
2
|
+
it "captures locals from the surrounding scope" do
|
|
3
|
+
var = 1
|
|
4
|
+
lambda { var }.call.should == 1
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
ruby_version_is ""..."1.9" do
|
|
8
|
+
it "overwrites a captured local when used as an argument" do
|
|
9
|
+
var = 1
|
|
10
|
+
lambda { |var| var }.call(2).should == 2
|
|
11
|
+
var.should == 2
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
ruby_version_is "1.9" do
|
|
16
|
+
it "does not capture a local when an argument has the same name" do
|
|
17
|
+
var = 1
|
|
18
|
+
lambda { |var| var }.call(2).should == 2
|
|
19
|
+
var.should == 1
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "taking zero arguments" do
|
|
24
|
+
before :each do
|
|
25
|
+
@l = lambda { 1 }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "does not raise an exception if no values are passed" do
|
|
29
|
+
@l.call.should == 1
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
ruby_version_is ""..."1.9" do
|
|
33
|
+
it "does not raise an exception if a value is passed" do
|
|
34
|
+
@l.call(0).should == 1
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
ruby_version_is "1.9" do
|
|
39
|
+
it "raises an ArgumentErro if a value is passed" do
|
|
40
|
+
lambda { @l.call(0) }.should raise_error(ArgumentError)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe "taking || arguments" do
|
|
46
|
+
before :each do
|
|
47
|
+
@l = lambda { || 1 }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "does not raise an exception when passed no values" do
|
|
51
|
+
@l.call.should == 1
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "raises an ArgumentError if a value is passed" do
|
|
55
|
+
lambda { @l.call(0) }.should raise_error(ArgumentError)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
describe "taking |a| arguments" do
|
|
60
|
+
before :each do
|
|
61
|
+
@l = lambda { |a| a }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "assigns the value passed to the argument" do
|
|
65
|
+
@l.call(2).should == 2
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "does not destructure a single Array value" do
|
|
69
|
+
@l.call([1, 2]).should == [1, 2]
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "does not call #to_ary to convert a single passed object to an Array" do
|
|
73
|
+
obj = mock("block yield to_ary")
|
|
74
|
+
obj.should_not_receive(:to_ary)
|
|
75
|
+
|
|
76
|
+
@l.call(obj).should equal(obj)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
ruby_version_is ""..."1.9" do
|
|
80
|
+
it "assigns nil to the argument if no value is passed" do
|
|
81
|
+
@l.call.should be_nil
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "assigns all the values passed to the argument as an Array" do
|
|
85
|
+
@l.call(1, 2).should == [1, 2]
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
ruby_version_is "1.9" do
|
|
90
|
+
it "raises an ArgumentError if no value is passed" do
|
|
91
|
+
lambda { @l.call }.should raise_error(ArgumentError)
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe "taking |a, b| arguments" do
|
|
97
|
+
before :each do
|
|
98
|
+
@l = lambda { |a, b| [a, b] }
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it "raises an ArgumentError if passed no values" do
|
|
102
|
+
lambda { @l.call }.should raise_error(ArgumentError)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "raises an ArgumentError if passed one value" do
|
|
106
|
+
lambda { @l.call(0) }.should raise_error(ArgumentError)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "assigns the values passed to the arguments" do
|
|
110
|
+
@l.call(1, 2).should == [1, 2]
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "does not call #to_ary to convert a single passed object to an Array" do
|
|
114
|
+
obj = mock("proc call to_ary")
|
|
115
|
+
obj.should_not_receive(:to_ary)
|
|
116
|
+
|
|
117
|
+
lambda { @l.call(obj) }.should raise_error(ArgumentError)
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
describe "taking |a, *b| arguments" do
|
|
122
|
+
before :each do
|
|
123
|
+
@l = lambda { |a, *b| [a, b] }
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it "raises an ArgumentError if passed no values" do
|
|
127
|
+
lambda { @l.call }.should raise_error(ArgumentError)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "does not destructure a single Array value yielded" do
|
|
131
|
+
@l.call([1, 2, 3]).should == [[1, 2, 3], []]
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "assigns all passed values after the first to the rest argument" do
|
|
135
|
+
@l.call(1, 2, 3).should == [1, [2, 3]]
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it "does not call #to_ary to convert a single passed object to an Array" do
|
|
139
|
+
obj = mock("block yield to_ary")
|
|
140
|
+
obj.should_not_receive(:to_ary)
|
|
141
|
+
|
|
142
|
+
@l.call(obj).should == [obj, []]
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
describe "taking |*| arguments" do
|
|
147
|
+
before :each do
|
|
148
|
+
# @l = lambda { |*| 1 }
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
it "does not raise an exception when passed no values" do
|
|
152
|
+
@l.call.should == 1
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
it "does not raise an exception when passed multiple values" do
|
|
156
|
+
@l.call(2, 3, 4).should == 1
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
it "does not call #to_ary to convert a single passed object to an Array" do
|
|
160
|
+
obj = mock("block yield to_ary")
|
|
161
|
+
obj.should_not_receive(:to_ary)
|
|
162
|
+
|
|
163
|
+
@l.call(obj).should == 1
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
describe "taking |*a| arguments" do
|
|
168
|
+
before :each do
|
|
169
|
+
@l = lambda { |*a| a }
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
it "assigns [] to the argument when passed no values" do
|
|
173
|
+
@l.call.should == []
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
it "assigns the argument an Array wrapping one passed value" do
|
|
177
|
+
@l.call(1).should == [1]
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
it "assigns the argument an Array wrapping all values passed" do
|
|
181
|
+
@l.call(1, 2, 3).should == [1, 2, 3]
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
it "does not call #to_ary to convert a single passed object to an Array" do
|
|
185
|
+
obj = mock("block yield to_ary")
|
|
186
|
+
obj.should_not_receive(:to_ary)
|
|
187
|
+
|
|
188
|
+
@l.call(obj).should == [obj]
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
describe "taking |a, | arguments" do
|
|
193
|
+
before :each do
|
|
194
|
+
# @l = lambda { |a, | a }
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it "raises an ArgumentError when passed no values" do
|
|
198
|
+
lambda { @l.call }.should raise_error(ArgumentError)
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
it "raises an ArgumentError when passed more than one value" do
|
|
202
|
+
lambda { @l.call(1, 2) }.should raise_error(ArgumentError)
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
it "assigns the argument the value passed" do
|
|
206
|
+
@l.call(1).should == 1
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
it "does not destructure when passed a single Array" do
|
|
210
|
+
@l.call([1,2]).should == [1, 2]
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
it "does not call #to_ary to convert a single passed object to an Array" do
|
|
214
|
+
obj = mock("block yield to_ary")
|
|
215
|
+
obj.should_not_receive(:to_ary)
|
|
216
|
+
|
|
217
|
+
@l.call(obj).should == obj
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
describe "taking |(a, b)| arguments" do
|
|
222
|
+
before :each do
|
|
223
|
+
# @l = lambda { |(a, b)| [a, b] }
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
it "raises an ArgumentError when passed no values" do
|
|
227
|
+
lambda { @l.call }.should raise_error(ArgumentError)
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
ruby_version_is ""..."1.9" do
|
|
231
|
+
it "raises an ArgumentError when passed a single Array" do
|
|
232
|
+
lambda { @l.call([1, 2]) }.should raise_error(ArgumentError)
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
it "raises an ArgumentError when passed a single object" do
|
|
236
|
+
obj = mock("block yield to_ary")
|
|
237
|
+
obj.should_not_receive(:to_ary)
|
|
238
|
+
|
|
239
|
+
lambda { @l.call(obj) }.should raise_error(ArgumentError)
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
ruby_version_is "1.9" do
|
|
244
|
+
it "destructures a single Array value yielded" do
|
|
245
|
+
@l.call([1, 2]).should == [1, 2]
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
it "calls #to_ary to convert a single passed object to an Array" do
|
|
249
|
+
obj = mock("block yield to_ary")
|
|
250
|
+
obj.should_receive(:to_ary).and_return([1, 2])
|
|
251
|
+
|
|
252
|
+
@l.call(obj).should == [1, 2]
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
it "raises an TypeError if #to_ary does not return an Array" do
|
|
256
|
+
obj = mock("block yield to_ary invalid")
|
|
257
|
+
obj.should_receive(:to_ary).and_return(1)
|
|
258
|
+
|
|
259
|
+
lambda { @l.call(obj) }.should raise_error(TypeError)
|
|
260
|
+
end
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
describe "Literal Regexps" do
|
|
2
|
+
it "yields a Regexp" do
|
|
3
|
+
/Hello/.should be_kind_of(Regexp)
|
|
4
|
+
end
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe "Regexps with interpolation" do
|
|
8
|
+
it "allows interpolation of strings" do
|
|
9
|
+
str = "foo|bar"
|
|
10
|
+
/#{str}/.should == /foo|bar/
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "allows interpolation to interact with other Regexp constructs" do
|
|
14
|
+
str = "foo)|(bar"
|
|
15
|
+
/(#{str})/.should == /(foo)|(bar)/
|
|
16
|
+
|
|
17
|
+
str = "a"
|
|
18
|
+
/[#{str}-z]/.should == /[a-z]/
|
|
19
|
+
end
|
|
20
|
+
end
|