opal 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +5 -10
- data/LICENSE +75 -0
- data/README.md +55 -3
- data/Rakefile +62 -139
- data/bin/opal +7 -10
- data/gems/core/README.md +5 -0
- data/gems/core/Rakefile +7 -0
- data/gems/core/core.gemspec +13 -0
- data/gems/core/lib/core.rb +33 -0
- data/gems/core/lib/core/array.rb +1470 -0
- data/gems/core/lib/core/basic_object.rb +15 -0
- data/gems/core/lib/core/class.rb +31 -0
- data/gems/core/lib/core/dir.rb +26 -0
- data/gems/core/lib/core/error.rb +43 -0
- data/gems/core/lib/core/false_class.rb +21 -0
- data/gems/core/lib/core/file.rb +54 -0
- data/gems/core/lib/core/hash.rb +725 -0
- data/gems/core/lib/core/kernel.rb +240 -0
- data/gems/core/lib/core/module.rb +98 -0
- data/gems/core/lib/core/nil_class.rb +41 -0
- data/gems/core/lib/core/numeric.rb +370 -0
- data/gems/core/lib/core/proc.rb +11 -0
- data/gems/core/lib/core/range.rb +17 -0
- data/gems/core/lib/core/regexp.rb +18 -0
- data/gems/core/lib/core/string.rb +328 -0
- data/gems/core/lib/core/symbol.rb +15 -0
- data/gems/core/lib/core/top_self.rb +8 -0
- data/gems/core/lib/core/true_class.rb +20 -0
- data/gems/core/lib/core/vm.rb +16 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/append_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/assoc_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/at_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/clear_spec.rb +1 -1
- data/{opals/opal/opal → gems/core}/spec/core/array/collect_bang_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/collect_spec.rb +0 -0
- data/gems/core/spec/core/array/compact_spec.rb +41 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/concat_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/constructor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/each_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/element_reference_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/first_spec.rb +1 -1
- data/{opals/opal/opal → gems/core}/spec/core/array/include_spec.rb +0 -0
- data/gems/core/spec/core/array/join_spec.rb +6 -0
- data/gems/core/spec/core/array/last_spec.rb +51 -0
- data/gems/core/spec/core/array/length_spec.rb +6 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/map_spec.rb +2 -0
- data/gems/core/spec/core/array/reverse_spec.rb +6 -0
- data/{opals/opal/opal → gems/core}/spec/core/builtin_constants/builtin_constants_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/and_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/inspect_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/to_s_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/xor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/file/join_spec.rb +1 -1
- data/gems/core/spec/core/hash/assoc_spec.rb +32 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/instance_eval_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/loop_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/raise_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/module/attr_accessor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/number/lt_spec.rb +0 -0
- data/gems/core/spec/core/string/sub_spec.rb +24 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/and_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/inspect_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/to_s_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/xor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/and_spec.rb +2 -3
- data/{opals/opal/opal → gems/core}/spec/language/array_spec.rb +21 -5
- data/gems/core/spec/language/block_spec.rb +38 -0
- data/{opals/opal/opal → gems/core}/spec/language/break_spec.rb +0 -0
- data/gems/core/spec/language/case_spec.rb +103 -0
- data/{opals/opal/opal → gems/core}/spec/language/def_spec.rb +11 -1
- data/{opals/opal/opal → gems/core}/spec/language/eigenclass_spec.rb +0 -0
- data/gems/core/spec/language/file_spec.rb +13 -0
- data/gems/core/spec/language/fixtures/block.rb +21 -0
- data/gems/core/spec/language/fixtures/super.rb +293 -0
- data/{opals/opal/opal → gems/core}/spec/language/hash_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/if_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/loop_spec.rb +0 -0
- data/gems/core/spec/language/metaclass_spec.rb +21 -0
- data/{opals/opal/opal → gems/core}/spec/language/method_spec.rb +60 -0
- data/{opals/opal/opal → gems/core}/spec/language/next_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/redo_spec.rb +0 -0
- data/gems/core/spec/language/regexp_spec.rb +26 -0
- data/{opals/opal/opal → gems/core}/spec/language/rescue_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/return_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/string_spec.rb +0 -0
- data/gems/core/spec/language/super_spec.rb +32 -0
- data/{opals/opal/opal → gems/core}/spec/language/until_spec.rb +47 -47
- data/gems/core/spec/language/variables_spec.rb +155 -0
- data/{opals/opal/opal → gems/core}/spec/language/while_spec.rb +47 -47
- data/{opals/opal/opal → gems/core}/spec/spec_helper.rb +1 -1
- data/gems/core_fs/README.md +19 -0
- data/gems/dev/Rakefile +5 -0
- data/gems/dev/lib/dev.js +99 -0
- data/gems/dev/lib/dev/generator.js +1264 -0
- data/gems/dev/lib/dev/parser.js +979 -0
- data/gems/dev/lib/dev/ruby_parser.js +1088 -0
- data/gems/dev/lib/dev/ruby_parser.y +1267 -0
- data/gems/dev/lib/dev/string_scanner.js +38 -0
- data/gems/dev/tools/racc2js/README.md +39 -0
- data/gems/dev/tools/racc2js/math_parser.js +222 -0
- data/gems/dev/tools/racc2js/math_parser.rb +133 -0
- data/gems/dev/tools/racc2js/math_parser.y +28 -0
- data/gems/dev/tools/racc2js/parser.js +218 -0
- data/gems/dev/tools/racc2js/racc2js.rb +153 -0
- data/gems/json/README.md +4 -0
- data/gems/json/json.gemspec +14 -0
- data/gems/json/lib/json.rb +64 -0
- data/gems/json/lib/json/ext.rb +51 -0
- data/{opals/opal/browser/lib/browser/json_parse.js → gems/json/lib/json/json2.js} +197 -37
- data/gems/ospec/README.md +0 -0
- data/gems/ospec/lib/ospec.rb +6 -0
- data/gems/ospec/lib/ospec/autorun.rb +3 -0
- data/gems/ospec/lib/ospec/dsl.rb +15 -0
- data/gems/ospec/lib/ospec/example.rb +11 -0
- data/gems/ospec/lib/ospec/example/before_and_after_hooks.rb +56 -0
- data/gems/ospec/lib/ospec/example/errors.rb +17 -0
- data/gems/ospec/lib/ospec/example/example_group.rb +12 -0
- data/gems/ospec/lib/ospec/example/example_group_factory.rb +21 -0
- data/gems/ospec/lib/ospec/example/example_group_hierarchy.rb +20 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/example/example_group_methods.rb +26 -68
- data/gems/ospec/lib/ospec/example/example_group_proxy.rb +14 -0
- data/gems/ospec/lib/ospec/example/example_methods.rb +46 -0
- data/gems/ospec/lib/ospec/example/example_proxy.rb +18 -0
- data/gems/ospec/lib/ospec/expectations.rb +19 -0
- data/gems/ospec/lib/ospec/expectations/errors.rb +8 -0
- data/gems/ospec/lib/ospec/expectations/fail_with.rb +8 -0
- data/gems/ospec/lib/ospec/expectations/handler.rb +27 -0
- data/gems/ospec/lib/ospec/matchers.rb +24 -0
- data/{opals/opal/Rakefile → gems/ospec/lib/ospec/matchers/be.rb} +0 -0
- data/gems/ospec/lib/ospec/matchers/generated_descriptions.rb +20 -0
- data/gems/ospec/lib/ospec/matchers/operator_matcher.rb +52 -0
- data/gems/ospec/lib/ospec/runner.rb +40 -0
- data/gems/ospec/lib/ospec/runner/example_group_runner.rb +44 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/runner/formatter/html_formatter.rb +31 -40
- data/gems/ospec/lib/ospec/runner/formatter/terminal_formatter.rb +48 -0
- data/gems/ospec/lib/ospec/runner/options.rb +36 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/runner/reporter.rb +23 -55
- data/gems/ospec/ospec.gemspec +0 -0
- data/gems/rquery/README.md +9 -0
- data/gems/rquery/lib/rquery.rb +10 -0
- data/gems/rquery/lib/rquery/ajax.rb +4 -0
- data/gems/rquery/lib/rquery/css.rb +96 -0
- data/gems/rquery/lib/rquery/document.rb +25 -0
- data/gems/rquery/lib/rquery/element.rb +292 -0
- data/gems/rquery/lib/rquery/event.rb +108 -0
- data/gems/rquery/lib/rquery/jquery.js +8177 -0
- data/gems/rquery/lib/rquery/request.rb +138 -0
- data/gems/rquery/lib/rquery/response.rb +49 -0
- data/gems/rquery/rquery.gemspec +16 -0
- data/lib/opal.js +1597 -0
- data/lib/opal.rb +6 -69
- data/lib/opal/builder.rb +115 -0
- data/lib/opal/bundle.rb +131 -0
- data/lib/opal/command.rb +11 -0
- data/lib/opal/context.rb +69 -0
- data/lib/opal/context/console.rb +12 -0
- data/lib/opal/context/file_system.rb +19 -0
- data/lib/opal/context/loader.rb +117 -0
- data/lib/opal/gem.rb +153 -0
- data/lib/opal/ruby/nodes.rb +1302 -0
- data/lib/opal/ruby/parser.rb +780 -0
- data/lib/opal/ruby/ruby_parser.rb +5170 -0
- data/lib/opal/ruby/ruby_parser.y +1298 -0
- data/opal.gemspec +11 -256
- metadata +179 -240
- data/.gitmodules +0 -6
- data/Opalfile +0 -384
- data/VERSION +0 -1
- data/demos/apps/browser_demo/index.html +0 -11
- data/demos/apps/browser_demo/lib/browser_demo.rb +0 -31
- data/demos/apps/simple_opal/Opalfile +0 -13
- data/demos/apps/simple_opal/index.html +0 -11
- data/demos/apps/simple_opal/lib/app_controller.rb +0 -62
- data/demos/apps/simple_opal/lib/main_window.rb +0 -146
- data/demos/browser/request/index.html +0 -52
- data/demos/browser/request/request.rb +0 -48
- data/gen/browser/__PROJECT_NAME__/Rakefile +0 -12
- data/gen/browser/__PROJECT_NAME__/index.html +0 -11
- data/gen/browser/__PROJECT_NAME__/javascripts/opal.debug.js +0 -4687
- data/gen/browser/__PROJECT_NAME__/javascripts/opal.min.js +0 -175
- data/gen/browser/__PROJECT_NAME__/lib/__PROJECT_NAME__.rb +0 -1
- data/lib/opal/builders/base.rb +0 -50
- data/lib/opal/builders/css.rb +0 -46
- data/lib/opal/builders/javascript.rb +0 -44
- data/lib/opal/builders/opal.rb +0 -79
- data/lib/opal/builders/ruby.rb +0 -50
- data/lib/opal/builders/ruby/generate.rb +0 -1851
- data/lib/opal/builders/ruby/nodes.rb +0 -210
- data/lib/opal/builders/ruby/ruby.rb +0 -916
- data/lib/opal/builders/ruby/ruby_parser.rb +0 -6008
- data/lib/opal/builders/ruby/ruby_parser.rb.y +0 -1451
- data/lib/opal/models/build_item.rb +0 -104
- data/lib/opal/models/hash_struct.rb +0 -40
- data/lib/opal/models/project.rb +0 -252
- data/lib/opal/models/struct_accessors.rb +0 -58
- data/lib/opal/models/target.rb +0 -176
- data/lib/opal/opal/build.rb +0 -169
- data/lib/opal/opal/env/console.rb +0 -66
- data/lib/opal/opal/env/fs.rb +0 -98
- data/lib/opal/opal/env/object.rb +0 -48
- data/lib/opal/opal/environment.rb +0 -139
- data/lib/opal/opal/gen.rb +0 -62
- data/lib/opal/opal/opal.rb +0 -75
- data/lib/opal/opal/repl.rb +0 -38
- data/lib/opal/opalfile/dsl.rb +0 -62
- data/lib/opal/opalfile/opalfile.rb +0 -133
- data/lib/opal/opalfile/task.rb +0 -96
- data/lib/opal/opalfile/task_manager.rb +0 -63
- data/lib/opal/opalfile/task_scope.rb +0 -52
- data/lib/opal/rack/app_server.rb +0 -119
- data/lib/opal/rake/opal_task.rb +0 -34
- data/opals/opal/README.md +0 -37
- data/opals/opal/browser/Opalfile +0 -11
- data/opals/opal/browser/README.md +0 -146
- data/opals/opal/browser/SIZZLE_LICESNSE.txt +0 -148
- data/opals/opal/browser/lib/browser.rb +0 -118
- data/opals/opal/browser/lib/browser/builder.rb +0 -41
- data/opals/opal/browser/lib/browser/canvas_context.rb +0 -115
- data/opals/opal/browser/lib/browser/dimensions.rb +0 -50
- data/opals/opal/browser/lib/browser/document.rb +0 -146
- data/opals/opal/browser/lib/browser/element.rb +0 -487
- data/opals/opal/browser/lib/browser/element/attributes.rb +0 -88
- data/opals/opal/browser/lib/browser/element/css.rb +0 -290
- data/opals/opal/browser/lib/browser/element/form.rb +0 -146
- data/opals/opal/browser/lib/browser/event/dom_events.rb +0 -81
- data/opals/opal/browser/lib/browser/event/event.rb +0 -177
- data/opals/opal/browser/lib/browser/event/trigger_events.rb +0 -53
- data/opals/opal/browser/lib/browser/geometry.rb +0 -97
- data/opals/opal/browser/lib/browser/json.rb +0 -32
- data/opals/opal/browser/lib/browser/request/request.rb +0 -201
- data/opals/opal/browser/lib/browser/sizzle.js +0 -1068
- data/opals/opal/browser/lib/browser/string.rb +0 -42
- data/opals/opal/browser/lib/browser/touch.rb +0 -37
- data/opals/opal/browser/lib/browser/vml_context.js +0 -33
- data/opals/opal/browser/lib/browser/window.rb +0 -36
- data/opals/opal/browser/spec/browser/browser_detection_spec.rb +0 -7
- data/opals/opal/browser/spec/document/aref_spec.rb +0 -110
- data/opals/opal/browser/spec/document/ready_spec.rb +0 -16
- data/opals/opal/browser/spec/element/body_spec.rb +0 -11
- data/opals/opal/browser/spec/element/clear_spec.rb +0 -26
- data/opals/opal/browser/spec/element/empty_spec.rb +0 -29
- data/opals/opal/browser/spec/element/has_class_spec.rb +0 -40
- data/opals/opal/browser/spec/element/hidden_spec.rb +0 -23
- data/opals/opal/browser/spec/element/hide_spec.rb +0 -31
- data/opals/opal/browser/spec/element/remove_spec.rb +0 -25
- data/opals/opal/browser/spec/element/show_spec.rb +0 -31
- data/opals/opal/browser/spec/element/style_spec.rb +0 -69
- data/opals/opal/browser/spec/element/toggle_spec.rb +0 -31
- data/opals/opal/browser/spec/element/visible_spec.rb +0 -23
- data/opals/opal/browser/spec/spec_helper.rb +0 -1
- data/opals/opal/opal/Opalfile +0 -14
- data/opals/opal/opal/spec/core/array/compact_spec.rb +0 -15
- data/opals/opal/opal/spec/fixtures/super.rb +0 -70
- data/opals/opal/opal/spec/language/____temp_remove_this.rb +0 -12
- data/opals/opal/opal/spec/language/block_spec.rb +0 -18
- data/opals/opal/opal/spec/language/case_spec.rb +0 -103
- data/opals/opal/opal/spec/language/metaclass_spec.rb +0 -21
- data/opals/opal/opal/spec/language/super_spec.rb +0 -26
- data/opals/opal/runtime/Opalfile +0 -78
- data/opals/opal/runtime/README.md +0 -12
- data/opals/opal/runtime/docs/debugging.md +0 -51
- data/opals/opal/runtime/lib/array.rb +0 -1516
- data/opals/opal/runtime/lib/basic_object.rb +0 -49
- data/opals/opal/runtime/lib/class.rb +0 -54
- data/opals/opal/runtime/lib/dir.rb +0 -36
- data/opals/opal/runtime/lib/error.rb +0 -49
- data/opals/opal/runtime/lib/false_class.rb +0 -52
- data/opals/opal/runtime/lib/file.rb +0 -79
- data/opals/opal/runtime/lib/hash.rb +0 -791
- data/opals/opal/runtime/lib/io.rb +0 -39
- data/opals/opal/runtime/lib/kernel.rb +0 -288
- data/opals/opal/runtime/lib/match_data.rb +0 -36
- data/opals/opal/runtime/lib/module.rb +0 -109
- data/opals/opal/runtime/lib/nil_class.rb +0 -69
- data/opals/opal/runtime/lib/number.rb +0 -398
- data/opals/opal/runtime/lib/proc.rb +0 -77
- data/opals/opal/runtime/lib/range.rb +0 -63
- data/opals/opal/runtime/lib/regexp.rb +0 -111
- data/opals/opal/runtime/lib/ruby.rb +0 -30
- data/opals/opal/runtime/lib/string.rb +0 -328
- data/opals/opal/runtime/lib/symbol.rb +0 -40
- data/opals/opal/runtime/lib/top_self.rb +0 -33
- data/opals/opal/runtime/lib/true_class.rb +0 -45
- data/opals/opal/runtime/runtime/browser.js +0 -287
- data/opals/opal/runtime/runtime/debug.js +0 -180
- data/opals/opal/runtime/runtime/opal.js +0 -1008
- data/opals/opal/runtime/runtime/post_opal.js +0 -1
- data/opals/opal/runtime/runtime/pre_opal.js +0 -2
- data/opals/opal/runtime/runtime/server_side.js +0 -50
- data/opals/opal/spec/LICENSE.txt +0 -26
- data/opals/opal/spec/Opalfile +0 -5
- data/opals/opal/spec/bin/spec.rb +0 -43
- data/opals/opal/spec/lib/spec.rb +0 -33
- data/opals/opal/spec/lib/spec/dsl.rb +0 -41
- data/opals/opal/spec/lib/spec/example.rb +0 -35
- data/opals/opal/spec/lib/spec/example/before_and_after_hooks.rb +0 -81
- data/opals/opal/spec/lib/spec/example/errors.rb +0 -42
- data/opals/opal/spec/lib/spec/example/example_group.rb +0 -37
- data/opals/opal/spec/lib/spec/example/example_group_factory.rb +0 -43
- data/opals/opal/spec/lib/spec/example/example_group_hierarchy.rb +0 -45
- data/opals/opal/spec/lib/spec/example/example_group_proxy.rb +0 -41
- data/opals/opal/spec/lib/spec/example/example_methods.rb +0 -73
- data/opals/opal/spec/lib/spec/example/example_proxy.rb +0 -48
- data/opals/opal/spec/lib/spec/expectations.rb +0 -46
- data/opals/opal/spec/lib/spec/expectations/errors.rb +0 -35
- data/opals/opal/spec/lib/spec/expectations/fail_with.rb +0 -37
- data/opals/opal/spec/lib/spec/expectations/handler.rb +0 -48
- data/opals/opal/spec/lib/spec/matchers.rb +0 -50
- data/opals/opal/spec/lib/spec/matchers/be.rb +0 -26
- data/opals/opal/spec/lib/spec/matchers/generated_descriptions.rb +0 -47
- data/opals/opal/spec/lib/spec/matchers/operator_matcher.rb +0 -66
- data/opals/opal/spec/lib/spec/runner.rb +0 -48
- data/opals/opal/spec/lib/spec/runner/example_group_runner.rb +0 -71
- data/opals/opal/spec/lib/spec/runner/formatter/terminal_formatter.rb +0 -82
- data/opals/opal/spec/lib/spec/runner/options.rb +0 -63
- data/opals/opal/spec/resources/index.html +0 -25
- data/opals/opal/spec/resources/spec.css +0 -132
- data/spec/cherry_kit/iseq_spec.rb +0 -38
- data/spec/spec_helper.rb +0 -16
- data/spec/vienna_spec.rb +0 -7
- data/yard/index.html +0 -43
- data/yard/style.css +0 -765
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
|
|
2
|
+
describe "Regexp literals" do
|
|
3
|
+
|
|
4
|
+
# ===========================================================================
|
|
5
|
+
# = Back-refs =
|
|
6
|
+
# ===========================================================================
|
|
7
|
+
|
|
8
|
+
it "saves match data in the $~ pseudo-global variable" do
|
|
9
|
+
"hello" =~ /l+/
|
|
10
|
+
$~.to_a.should == ["ll"]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "saves captures in numbered $[1-9] variables" do
|
|
14
|
+
"1234567890" =~ /(1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/
|
|
15
|
+
$~.to_a.should == ["1234567890", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
|
|
16
|
+
$1.should == "1"
|
|
17
|
+
$2.should == "2"
|
|
18
|
+
$3.should == "3"
|
|
19
|
+
$4.should == "4"
|
|
20
|
+
$5.should == "5"
|
|
21
|
+
$6.should == "6"
|
|
22
|
+
$7.should == "7"
|
|
23
|
+
$8.should == "8"
|
|
24
|
+
$9.should == "9"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
|
2
|
+
require File.expand_path('../fixtures/super', __FILE__)
|
|
3
|
+
|
|
4
|
+
describe "The super keyword" do
|
|
5
|
+
|
|
6
|
+
it "calls the method on the calling class" do
|
|
7
|
+
Super::S1::A.new.foo([]).should == ["A#foo", "A#bar"]
|
|
8
|
+
Super::S1::A.new.bar([]).should == ["A#bar"]
|
|
9
|
+
Super::S1::B.new.foo([]).should == ["B#foo","A#foo","B#bar","A#bar"]
|
|
10
|
+
Super::S1::B.new.bar([]).should == ["B#bar", "A#bar"]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "searches the full inheritence chain" do
|
|
14
|
+
Super::S2::B.new.foo([]).should == ["B#foo", "A#baz"]
|
|
15
|
+
Super::S2::B.new.baz([]).should == ["A#baz"]
|
|
16
|
+
Super::S2::C.new.foo([]).should == ["B#foo","C#baz","A#baz"]
|
|
17
|
+
Super::S2::C.new.baz([]).should == ["C#baz","A#baz"]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "searches class methods" do
|
|
21
|
+
Super::S3::A.new.foo([]).should == ["A#foo"]
|
|
22
|
+
Super::S3::A.foo([]).should == ["A::foo"]
|
|
23
|
+
Super::S3::A.bar([]).should == ["A::bar","A::foo"]
|
|
24
|
+
Super::S3::B.new.foo([]).should == ["A#foo"]
|
|
25
|
+
Super::S3::B.foo([]).should == ["B::foo","A::foo"]
|
|
26
|
+
Super::S3::B.bar([]).should == ["B::bar","A::bar","B::foo","A::foo"]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "calls the method on the calling class including modules" do
|
|
30
|
+
Super::MS1::A.new.foo([]).should == ["ModA#foo", "ModA#bar"]
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -107,51 +107,51 @@ describe "The until expression" do
|
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
describe "The until modifier" do
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
end
|
|
110
|
+
# describe "The until modifier" do
|
|
111
|
+
# it "runs preceding statement while the condition is false" do
|
|
112
|
+
# i = 0
|
|
113
|
+
# i = i + 1 until i > 9
|
|
114
|
+
# i.should == 10
|
|
115
|
+
# end
|
|
116
|
+
#
|
|
117
|
+
# it "evaluates condition before statement execution" do
|
|
118
|
+
# a = []
|
|
119
|
+
# i = 0
|
|
120
|
+
# a << i until (i = i + 1) >= 3
|
|
121
|
+
# a.should == [1, 2]
|
|
122
|
+
# end
|
|
123
|
+
#
|
|
124
|
+
# it "does not run preceding statement if the condition is true" do
|
|
125
|
+
# i = 0
|
|
126
|
+
# i = i + 1 until true
|
|
127
|
+
# i.should == 0
|
|
128
|
+
# end
|
|
129
|
+
#
|
|
130
|
+
# it "returns nil if ended when condition became true" do
|
|
131
|
+
# i = 0
|
|
132
|
+
# (i = i + 1 until i > 9).should == nil
|
|
133
|
+
# end
|
|
134
|
+
#
|
|
135
|
+
# it "returns value passed to break if interrupted by break" do
|
|
136
|
+
# (break 123 until false).should == 123
|
|
137
|
+
# end
|
|
138
|
+
#
|
|
139
|
+
# it "returns nil if interrupted by break with no arguments" do
|
|
140
|
+
# (break until false).should == nil
|
|
141
|
+
# end
|
|
142
|
+
#
|
|
143
|
+
# it "skips to end of body with next" do
|
|
144
|
+
# i = 0
|
|
145
|
+
# j = 0
|
|
146
|
+
# (i = i + 1) == 3 ? next : j = j + i until i > 10
|
|
147
|
+
# j.should == 63
|
|
148
|
+
# end
|
|
149
|
+
#
|
|
150
|
+
# it "restarts the current iteration without reevaluating condition with redo" do
|
|
151
|
+
# i = 0
|
|
152
|
+
# j = 0
|
|
153
|
+
# (i = i + 1) == 4 ? redo : j = j + i until (i = i + 1) > 10
|
|
154
|
+
# j.should == 34
|
|
155
|
+
# end
|
|
156
|
+
# end
|
|
157
157
|
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
|
|
2
|
+
describe "Operator assignment 'var op= expr'" do
|
|
3
|
+
it "is equivalent to 'var = var op expr'" do
|
|
4
|
+
x = 13
|
|
5
|
+
(x += 5).should == 18
|
|
6
|
+
x.should == 18
|
|
7
|
+
|
|
8
|
+
x = 17
|
|
9
|
+
(x -= 11).should == 6
|
|
10
|
+
x.should == 6
|
|
11
|
+
|
|
12
|
+
x = 2
|
|
13
|
+
(x *= 5).should == 10
|
|
14
|
+
x.should == 10
|
|
15
|
+
|
|
16
|
+
# x = 36
|
|
17
|
+
# (x /= 9).should == 4
|
|
18
|
+
# x.should == 4
|
|
19
|
+
|
|
20
|
+
# x = 23
|
|
21
|
+
# (x %= 5).should == 3
|
|
22
|
+
# x.should == 3
|
|
23
|
+
# (x %= 3).should == 0
|
|
24
|
+
# x.should == 0
|
|
25
|
+
|
|
26
|
+
# x = 2
|
|
27
|
+
# (x **= 3).should == 8
|
|
28
|
+
# x.should == 8
|
|
29
|
+
|
|
30
|
+
# x = 4
|
|
31
|
+
# (x |= 3).should == 7
|
|
32
|
+
# x.should == 7
|
|
33
|
+
# (x |= 4).should == 7
|
|
34
|
+
# x.should == 7
|
|
35
|
+
|
|
36
|
+
# x = 6
|
|
37
|
+
# (x &= 3).should == 2
|
|
38
|
+
# x.should == 2
|
|
39
|
+
# (x &= 4).should == 0
|
|
40
|
+
# x.should == 0
|
|
41
|
+
|
|
42
|
+
# x = 2
|
|
43
|
+
# (x ^= 3).should == 1
|
|
44
|
+
# x.should == 1
|
|
45
|
+
# (x ^= 4).should == 5
|
|
46
|
+
# x.should == 5
|
|
47
|
+
|
|
48
|
+
# x = 17
|
|
49
|
+
# (x <<= 3).should == 136
|
|
50
|
+
# x.should == 136
|
|
51
|
+
|
|
52
|
+
# x = 5
|
|
53
|
+
# (x >>= 1).should == 2
|
|
54
|
+
# x.should == 2
|
|
55
|
+
|
|
56
|
+
x = nil
|
|
57
|
+
(x ||= 17).should == 17
|
|
58
|
+
x.should == 17
|
|
59
|
+
(x ||= 2).should == 17
|
|
60
|
+
x.should == 17
|
|
61
|
+
|
|
62
|
+
# x = false
|
|
63
|
+
# (x &&= true).should == false
|
|
64
|
+
# x.should == false
|
|
65
|
+
# (x &&= false).should == false
|
|
66
|
+
# x.should == false
|
|
67
|
+
# x = true
|
|
68
|
+
# (x &&= true).should == true
|
|
69
|
+
# x.should == true
|
|
70
|
+
# (x &&= false).should == false
|
|
71
|
+
# x.should == false
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe "Operator assignment 'obj[idx] op= expr'" do
|
|
76
|
+
it "is equivalent to 'obj[idx] = obj[idx] op expr'" do
|
|
77
|
+
x = [2, 13, 7]
|
|
78
|
+
(x[1] += 5).should == 18
|
|
79
|
+
x.should == [2, 18, 7]
|
|
80
|
+
|
|
81
|
+
x = [17, 6]
|
|
82
|
+
(x[0] -= 11).should == 6
|
|
83
|
+
x.should == [6, 6]
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe "Single assignment" do
|
|
88
|
+
it "Assignment does not modify the lhs, it reassigns its reference" do
|
|
89
|
+
a = 'Foobar'
|
|
90
|
+
b = a
|
|
91
|
+
b = 'Bazquux'
|
|
92
|
+
a.should == 'Foobar'
|
|
93
|
+
b.should == 'Bazquux'
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "Assignment does not copy the object being assigned, just creates a new reference to it" do
|
|
97
|
+
a = []
|
|
98
|
+
b = a
|
|
99
|
+
b << 1
|
|
100
|
+
a.should == [1]
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "If rhs has multiple arguments, lhs becomes an Array of them" do
|
|
104
|
+
a = 1, 2, 3
|
|
105
|
+
a.should == [1, 2, 3]
|
|
106
|
+
|
|
107
|
+
a = 1, (), 3
|
|
108
|
+
a.should == [1, nil, 3]
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
describe "Multiple assignment without grouping or splatting" do
|
|
113
|
+
it "an equal number of arguments on lhs and rhs assigns positionally" do
|
|
114
|
+
a, b, c, d = 1, 2, 3, 4
|
|
115
|
+
a.should == 1
|
|
116
|
+
b.should == 2
|
|
117
|
+
c.should == 3
|
|
118
|
+
d.should == 4
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it "If rhs has too few arguments, the missing ones on lhs are assigned nil" do
|
|
122
|
+
a, b, c = 1, 2
|
|
123
|
+
a.should == 1
|
|
124
|
+
b.should == 2
|
|
125
|
+
c.should == nil
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "If rhs has too many arguments, the extra ones are silently not assigned anywhere" do
|
|
129
|
+
a, b = 1, 2, 3
|
|
130
|
+
a.should == 1
|
|
131
|
+
b.should == 2
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
describe "Multiple assignments with splats" do
|
|
136
|
+
it "* on the lhs collects all parameters from its position onwards as an Array or an empty array" do
|
|
137
|
+
a, *b = 1, 2
|
|
138
|
+
c, *d = 1
|
|
139
|
+
e, *f = 1, 2, 3
|
|
140
|
+
g, *h = 1, [2, 3]
|
|
141
|
+
# i
|
|
142
|
+
# j
|
|
143
|
+
# k
|
|
144
|
+
|
|
145
|
+
a.should == 1
|
|
146
|
+
b.should == [2]
|
|
147
|
+
c.should == 1
|
|
148
|
+
d.should == []
|
|
149
|
+
e.should == 1
|
|
150
|
+
f.should == [2, 3]
|
|
151
|
+
g.should == 1
|
|
152
|
+
h.should == [[2, 3]]
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
@@ -101,7 +101,7 @@ describe "The while expression" do
|
|
|
101
101
|
while (i = i + 1) < 3
|
|
102
102
|
a << i
|
|
103
103
|
j = j + 1
|
|
104
|
-
redo if j < 3
|
|
104
|
+
# redo if j < 3
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
a.should == [1, 1, 1, 2]
|
|
@@ -114,50 +114,50 @@ describe "The while modifier" do
|
|
|
114
114
|
i = i + 1 while i < 3
|
|
115
115
|
i.should == 3
|
|
116
116
|
end
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
(i = i + 1) == 4 ? redo : j = j + i while (i = i + 1) <= 10
|
|
161
|
-
|
|
162
|
-
|
|
117
|
+
|
|
118
|
+
it "evaluates condition before statement execution" do
|
|
119
|
+
a = []
|
|
120
|
+
i = 0
|
|
121
|
+
a << i while (i = i + 1) < 3
|
|
122
|
+
a.should == [1, 2]
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it "does not run preceding statement if the condition is false" do
|
|
126
|
+
i = 0
|
|
127
|
+
i = i + 1 while false
|
|
128
|
+
i.should == 0
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it "does not run preceding statement if the condition is empty" do
|
|
132
|
+
i = 0
|
|
133
|
+
i = i + 1 while ()
|
|
134
|
+
i.should == 0
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
it "returns nil if ended when condition became false" do
|
|
138
|
+
i = 0
|
|
139
|
+
(i = i + 1 while i < 10).should == nil
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "returns value passed to break if interrupetd by break" do
|
|
143
|
+
(break 123 while true).should == 123
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it "returns nil if interrupted by break with no arguments" do
|
|
147
|
+
(break while true).should == nil
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
it "skips to end of body with next" do
|
|
151
|
+
i = 0
|
|
152
|
+
j = 0
|
|
153
|
+
(( i = i + 1) == 3 ? next : j = j + i) while i <= 10
|
|
154
|
+
j.should == 63
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it "restarts the current iteration without reevaluating condition with redo" do
|
|
158
|
+
i = 0
|
|
159
|
+
j = 0
|
|
160
|
+
# (i = i + 1) == 4 ? redo : j = j + i while (i = i + 1) <= 10
|
|
161
|
+
j.should == 34
|
|
162
|
+
end
|
|
163
163
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Opals' Ruby Filesystem
|
|
2
|
+
======================
|
|
3
|
+
|
|
4
|
+
This gem provides the additional methods for File and Dir to support
|
|
5
|
+
full reading and writing. Core only contains the most basic methods
|
|
6
|
+
from File and Dir because Opal in the browser has no means of actually
|
|
7
|
+
reading or writing to disk. This gem is only meant to be used by the
|
|
8
|
+
gem context, which runs ontop of therubyracer. This gem will
|
|
9
|
+
automatically be loaded by the Context class, so it will be immediately
|
|
10
|
+
available for use.
|
|
11
|
+
|
|
12
|
+
Implementation
|
|
13
|
+
--------------
|
|
14
|
+
|
|
15
|
+
The Context class in the Opal build tools exposes/fixes the `.fs` property
|
|
16
|
+
on the `opal` object in the javascript context to expose a lot of the
|
|
17
|
+
native functionality directly. This is backed by the `FileSystem` class
|
|
18
|
+
in the Opal build tools.
|
|
19
|
+
|