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
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# proc.rb
|
|
3
|
-
# vienna
|
|
4
|
-
#
|
|
5
|
-
# Created by Adam Beynon.
|
|
6
|
-
# Copyright 2010 Adam Beynon.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
# furnished to do so, subject to the following conditions:
|
|
14
|
-
#
|
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
|
16
|
-
# all copies or substantial portions of the Software.
|
|
17
|
-
#
|
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
# THE SOFTWARE.
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
class Proc
|
|
28
|
-
|
|
29
|
-
def to_proc
|
|
30
|
-
self
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def call
|
|
34
|
-
`if (#{self}.__lambda__) {
|
|
35
|
-
try {
|
|
36
|
-
return #{self}.apply(#{self}.__self__, []);
|
|
37
|
-
}
|
|
38
|
-
catch (e) {
|
|
39
|
-
// first try and catch a break (from the lambda proc)
|
|
40
|
-
if (e.__keyword__ == 'break') {
|
|
41
|
-
//console.log("break!");
|
|
42
|
-
return e.opal_value;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// look for next statements
|
|
46
|
-
if (e.__keyword__ == 'next') {
|
|
47
|
-
return e.opal_value;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// next try and catch return error statement (simply return it)
|
|
51
|
-
if (e.__keyword__ == 'return') {
|
|
52
|
-
return e.opal_value;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// redo - simply recall block?
|
|
56
|
-
if (e.__keyword__ == 'redo') {
|
|
57
|
-
return arguments.callee.apply(#{self});
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// worst case, rethrow error
|
|
61
|
-
throw e;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
//throw "cannot .call for non lambda block.. yet"
|
|
66
|
-
return #{self}.apply(#{self}.__self__);
|
|
67
|
-
}`
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def to_s
|
|
71
|
-
`return "#<" + #{self}.class_name + ":" + #{self}.id + ">";`
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def inspect
|
|
75
|
-
to_s
|
|
76
|
-
end
|
|
77
|
-
end
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# range.rb
|
|
3
|
-
# vienna
|
|
4
|
-
#
|
|
5
|
-
# Created by Adam Beynon.
|
|
6
|
-
# Copyright 2010 Adam Beynon.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
# furnished to do so, subject to the following conditions:
|
|
14
|
-
#
|
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
|
16
|
-
# all copies or substantial portions of the Software.
|
|
17
|
-
#
|
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
# THE SOFTWARE.
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
class Range
|
|
28
|
-
|
|
29
|
-
def self.new(start, ending, exclusive)
|
|
30
|
-
`if (!#{exclusive}) {
|
|
31
|
-
#{exclusive} = #{false};
|
|
32
|
-
}`
|
|
33
|
-
`return #{self}.R(#{start}, #{ending}, #{exclusive}.r);`
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def length
|
|
37
|
-
`return #{self}.__end__ - #{self}.__start__;`
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def begin
|
|
41
|
-
`return #{self}.__start__;`
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def end
|
|
45
|
-
`return #{self}.__end__;`
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def ===(val)
|
|
49
|
-
include? val
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def cover?(val)
|
|
53
|
-
include? val
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def include?(val)
|
|
57
|
-
`return (#{self}.__start__ <= #{val} && #{val} <= #{self}.__real_end__) ? #{true} : #{false};`
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def exclude_end?
|
|
61
|
-
`return #{self}.__exclusive__ ? #{true} : #{false};`
|
|
62
|
-
end
|
|
63
|
-
end
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# regexp.rb
|
|
3
|
-
# vienna
|
|
4
|
-
#
|
|
5
|
-
# Created by Adam Beynon.
|
|
6
|
-
# Copyright 2010 Adam Beynon.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
# furnished to do so, subject to the following conditions:
|
|
14
|
-
#
|
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
|
16
|
-
# all copies or substantial portions of the Software.
|
|
17
|
-
#
|
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
# THE SOFTWARE.
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
# A Regexp holds a regular expression, used to match a pattern against strings.
|
|
28
|
-
# Regexps are created using the `/.../` and `%r{...}` literals, and by the
|
|
29
|
-
# {Regexp.new} constructor.
|
|
30
|
-
#
|
|
31
|
-
# ## Implementation
|
|
32
|
-
#
|
|
33
|
-
# Toll free bridged with native regexp object.
|
|
34
|
-
#
|
|
35
|
-
class Regexp
|
|
36
|
-
|
|
37
|
-
# Produce a nicely formatted string-version of `self`.
|
|
38
|
-
#
|
|
39
|
-
# @example
|
|
40
|
-
# /^abc/.inspect
|
|
41
|
-
# # => "/^abc/"
|
|
42
|
-
#
|
|
43
|
-
# @return [String] string
|
|
44
|
-
def inspect
|
|
45
|
-
`return #{self}.toString();`
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Equality - Two regexps are equal if their patterns are identical, they have
|
|
49
|
-
# the same character set code, and their {#casefold?} values are the same.
|
|
50
|
-
#
|
|
51
|
-
# @example
|
|
52
|
-
# /abc/ == /abc/x # => false
|
|
53
|
-
# /abc/ == /abc/i # => false
|
|
54
|
-
# /abc/ == /abc/n # => false
|
|
55
|
-
# /abc/u == /abc/n # => false
|
|
56
|
-
#
|
|
57
|
-
# @param [Regexp] other_regexp another regexp to comapre
|
|
58
|
-
# @return [Boolean]
|
|
59
|
-
def ==(other_regexp)
|
|
60
|
-
`return #{self}.toString() === #{other_regexp}.toString() ? #{true} : #{false};`
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# Case equality - Synonym for {Regexp#=~} used in case statements.
|
|
64
|
-
#
|
|
65
|
-
# @example
|
|
66
|
-
# a = "HELLO"
|
|
67
|
-
# case a
|
|
68
|
-
# when /^[a-z]*$/; puts "Lower case"
|
|
69
|
-
# when /^[A-Z]*$/; puts "Upper case"
|
|
70
|
-
# else puts "Mixed case"
|
|
71
|
-
# end
|
|
72
|
-
#
|
|
73
|
-
# # => "Upper case"
|
|
74
|
-
#
|
|
75
|
-
# @param [String] str string to test
|
|
76
|
-
# @return [Boolean]
|
|
77
|
-
def ===(str)
|
|
78
|
-
`if (#{self}.exec(#{str})) {
|
|
79
|
-
return #{true};
|
|
80
|
-
} else {
|
|
81
|
-
return #{false};
|
|
82
|
-
}`
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
alias_method :eql?, :==
|
|
86
|
-
|
|
87
|
-
# Returns a {MatchData} object describing the match, or `nil` if there was no
|
|
88
|
-
# match. This is equivalent to retrieving the value of the special variable
|
|
89
|
-
# $~ following a normal match. If the second parameter is present, it
|
|
90
|
-
# specifies the position in the string to begin the search.
|
|
91
|
-
#
|
|
92
|
-
# @example
|
|
93
|
-
# /(.)(.)(.)/.match("abc")[2]
|
|
94
|
-
# # => "b"
|
|
95
|
-
# /(.)(.)/.match("abc")[2]
|
|
96
|
-
# # => "c"
|
|
97
|
-
#
|
|
98
|
-
# @todo Passing a block is not yet supported.
|
|
99
|
-
#
|
|
100
|
-
# @param [Sring] string to match against
|
|
101
|
-
# @return [MatchData, nil] result or nil
|
|
102
|
-
def match(string)
|
|
103
|
-
m = nil
|
|
104
|
-
`if (#{m} = #{self}.exec(#{string})) {
|
|
105
|
-
return #{MatchData.new m};
|
|
106
|
-
} else {
|
|
107
|
-
return #{nil};
|
|
108
|
-
}`
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# ruby.rb
|
|
3
|
-
# vienna
|
|
4
|
-
#
|
|
5
|
-
# Created by Adam Beynon.
|
|
6
|
-
# Copyright 2010 Adam Beynon.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
# furnished to do so, subject to the following conditions:
|
|
14
|
-
#
|
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
|
16
|
-
# all copies or substantial portions of the Software.
|
|
17
|
-
#
|
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
# THE SOFTWARE.
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
# This file simply maintains "everything" else.. runtime constants etc.
|
|
28
|
-
|
|
29
|
-
# This depends on the platform.
|
|
30
|
-
RUBY_PLATFORM = `opal.ruby_platform`
|
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# string.rb
|
|
3
|
-
# vienna
|
|
4
|
-
#
|
|
5
|
-
# Created by Adam Beynon.
|
|
6
|
-
# Copyright 2010 Adam Beynon.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
# furnished to do so, subject to the following conditions:
|
|
14
|
-
#
|
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
|
16
|
-
# all copies or substantial portions of the Software.
|
|
17
|
-
#
|
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
# THE SOFTWARE.
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
# A {String} object holds a sequence of bytes, typically representing
|
|
28
|
-
# characters.
|
|
29
|
-
#
|
|
30
|
-
# ## Implementation Details.
|
|
31
|
-
#
|
|
32
|
-
# For performance, strings in Opal are built directly on top of native
|
|
33
|
-
# javascript strings, so that they are in fact the same object. This has the
|
|
34
|
-
# side effect that all strings are immutable, that is, they cannot be changed.
|
|
35
|
-
# Most of the string methods that end in '!' for example are not implemented,
|
|
36
|
-
# but their counterparts are: {#upcase} exists, but {#upcase!} does not, for
|
|
37
|
-
# example.
|
|
38
|
-
class String
|
|
39
|
-
|
|
40
|
-
# Returns a new string object containing a copy of `str`.
|
|
41
|
-
#
|
|
42
|
-
# @param [String] str string to copy
|
|
43
|
-
# @return [String] result
|
|
44
|
-
def self.new(str = "")
|
|
45
|
-
`return new String(#{str});`
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Copy - Returns a new {String} constaining `num` copies of the receiver.
|
|
49
|
-
#
|
|
50
|
-
# @example
|
|
51
|
-
# "Ho! " * 3
|
|
52
|
-
# # => "Ho! Ho! Ho! "
|
|
53
|
-
#
|
|
54
|
-
# @param [Number] num number of copies
|
|
55
|
-
# @return [String] result
|
|
56
|
-
def *(num)
|
|
57
|
-
`var res = [];
|
|
58
|
-
for (var i = 0; i < #{num}; i++) {
|
|
59
|
-
res.push(#{self});
|
|
60
|
-
}
|
|
61
|
-
return res.join('');`
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# Concatenation - Returns a new {String} containing `other_str` concatenated
|
|
65
|
-
# to `self`.
|
|
66
|
-
#
|
|
67
|
-
# @example
|
|
68
|
-
# "Hello from " + self.to_s
|
|
69
|
-
# # => "Hello from main"
|
|
70
|
-
#
|
|
71
|
-
# @param [String] other_str string to concatenate
|
|
72
|
-
# @return [String] result
|
|
73
|
-
def +(other_str)
|
|
74
|
-
`return #{self} + #{other_str};`
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# Comparison - returns -1 if `other_str` is greater than, 0 if `other_str` is
|
|
78
|
-
# equal to, and 1 if `other_str` is less than `self`.
|
|
79
|
-
#
|
|
80
|
-
# @example
|
|
81
|
-
# "abcdef" <=> "abcde"
|
|
82
|
-
# # => 1
|
|
83
|
-
# "abcdef" <=> "abcdef"
|
|
84
|
-
# # => 0
|
|
85
|
-
# "abcdef" <=> "abcdefg"
|
|
86
|
-
# # => -1
|
|
87
|
-
# "abcdef" <=> "ABCDEF"
|
|
88
|
-
# # => 1
|
|
89
|
-
#
|
|
90
|
-
# @param [String] other_str string to compare
|
|
91
|
-
# @return [-1, 0, 1, nil] result
|
|
92
|
-
def <=>(other_str)
|
|
93
|
-
`if (!(#{other_str}.info & #{self}.TS)) return #{nil};
|
|
94
|
-
else if (#{self} > #{other_str}) return 1;
|
|
95
|
-
else if (#{self} < #{other_str}) return -1;
|
|
96
|
-
return 0;`
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
# Equality - if `other` is not a {String} return `false`. Otherwise, returns
|
|
100
|
-
# `true` if `self` <=> `other` returns zero.
|
|
101
|
-
#
|
|
102
|
-
# @param [String] other string to compare
|
|
103
|
-
# @return [Boolean] result
|
|
104
|
-
def ==(other)
|
|
105
|
-
`return (#{self}.valueOf() === #{other}.valueOf()) ? #{true} : #{false};`
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
# Returns a copy of `self` with the first character converted to uppercase and
|
|
109
|
-
# the remainder to lowercase.
|
|
110
|
-
#
|
|
111
|
-
# @example
|
|
112
|
-
# "hello".capitalize
|
|
113
|
-
# # => "Hello"
|
|
114
|
-
# "HELLO".capitalize
|
|
115
|
-
# # => "Hello"
|
|
116
|
-
# "123ABC".capitalize
|
|
117
|
-
# # => "123abc"
|
|
118
|
-
#
|
|
119
|
-
# @return [String]
|
|
120
|
-
def capitalize
|
|
121
|
-
`return #{self}[0].toUpperCase() + #{self}.substr(1).toLowerCase();`
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
# Case-inseneitive version of {String#<=>}.
|
|
125
|
-
#
|
|
126
|
-
# @example
|
|
127
|
-
# "abcdef".casecmp("abcde")
|
|
128
|
-
# # => 1
|
|
129
|
-
# "aBcDeF".casecmp("abcdef")
|
|
130
|
-
# # => 0
|
|
131
|
-
# "abcdef".casecmp("abcdefg")
|
|
132
|
-
# # => -1
|
|
133
|
-
# "abcdef".casecmp("ABCDEF")
|
|
134
|
-
# # => 0
|
|
135
|
-
#
|
|
136
|
-
# @param [String] other_str string to compare
|
|
137
|
-
# @return [-1, 0, 1, nil] result
|
|
138
|
-
def casecmp(other_str)
|
|
139
|
-
`var a = #{self}.toLowerCase(), b = #{other_str}.toLowerCase();
|
|
140
|
-
if (!(b.info & a.TS)) return #{nil};
|
|
141
|
-
else if (a > b) return 1;
|
|
142
|
-
else if (a < b) return -1;
|
|
143
|
-
return 0;`
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
# Returns a copy of `self` with all uppercase letters replaced with their
|
|
147
|
-
# lowercase counterparts.
|
|
148
|
-
#
|
|
149
|
-
# @example
|
|
150
|
-
# "hEllO".downcase
|
|
151
|
-
# # => "hello"
|
|
152
|
-
#
|
|
153
|
-
# @return [String] result
|
|
154
|
-
def downcase
|
|
155
|
-
`return #{self}.toLowerCase();`
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
# Returns `true` if `self` has a length of zero.
|
|
159
|
-
#
|
|
160
|
-
# @example
|
|
161
|
-
# "hello".empty?
|
|
162
|
-
# # => false
|
|
163
|
-
# "".empty?
|
|
164
|
-
# # => true
|
|
165
|
-
#
|
|
166
|
-
# @return [Boolean]
|
|
167
|
-
def empty?
|
|
168
|
-
`return #{self} == '' ? #{true} : #{false};`
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
# Returns `true` if `self` ends with a `suffix` given.
|
|
172
|
-
#
|
|
173
|
-
# @example
|
|
174
|
-
# "hello".end_with? "lo"
|
|
175
|
-
# # => true
|
|
176
|
-
#
|
|
177
|
-
# @param [String] suffix suffix to check
|
|
178
|
-
# @return [Boolean]
|
|
179
|
-
def end_with?(suffix = "")
|
|
180
|
-
`return (#{suffix} != '' && #{self}.lastIndexOf(#{suffix}) == (#{self}.length - #{suffix}.length)) ? #{true} : #{false};`
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
# Two strings are equal if they have the same length and content.
|
|
184
|
-
#
|
|
185
|
-
# @param [String] other string to comapre
|
|
186
|
-
# @return [Boolean]
|
|
187
|
-
def eql?(other)
|
|
188
|
-
`return (#{self} == #{other}) ? #{true} : #{false};`
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
# Returns true if `self` contains the given `other_str`.
|
|
192
|
-
#
|
|
193
|
-
# @example
|
|
194
|
-
# "hello".include? "lo"
|
|
195
|
-
# # => true
|
|
196
|
-
# "hello".include? "ol"
|
|
197
|
-
# # => false
|
|
198
|
-
# "hello".include? "h"
|
|
199
|
-
# # => true
|
|
200
|
-
#
|
|
201
|
-
# @param [String] other_str string to check for
|
|
202
|
-
# @return [Boolean]
|
|
203
|
-
def include?(other_str)
|
|
204
|
-
`var res = #{self}.indexOf(#{other_str});
|
|
205
|
-
if (res != -1) {
|
|
206
|
-
return #{true};
|
|
207
|
-
}
|
|
208
|
-
return #{false};`
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
# Returns the index of the first occurrence of the given `substring` or
|
|
212
|
-
# pattern (regexp) in `self`. Returns `nil` if not found. If the second
|
|
213
|
-
# parameter is present, it specifies the position in the string to begin the
|
|
214
|
-
# search.
|
|
215
|
-
#
|
|
216
|
-
# @todo Use of Regexp or offsets not yet implemented.
|
|
217
|
-
#
|
|
218
|
-
# @example
|
|
219
|
-
# "hello".index "e"
|
|
220
|
-
# # => 1
|
|
221
|
-
# "hello".index "lo"
|
|
222
|
-
# # => 3
|
|
223
|
-
# "hello".index "a"
|
|
224
|
-
# # => nil
|
|
225
|
-
#
|
|
226
|
-
# @param [String] substring string to look for
|
|
227
|
-
# @return [Number, nil] result
|
|
228
|
-
def index(substring)
|
|
229
|
-
`var res = #{self}.indexOf(#{substring});
|
|
230
|
-
if (res != -1) {
|
|
231
|
-
return res;
|
|
232
|
-
}
|
|
233
|
-
return #{nil};`
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
# Returns a printable version of `self`, surrounded by quote marks, with
|
|
237
|
-
# special characters escaped.
|
|
238
|
-
#
|
|
239
|
-
# @todo Does not yet escape special characters
|
|
240
|
-
#
|
|
241
|
-
# @example
|
|
242
|
-
# str = "hello"
|
|
243
|
-
# str.inspect
|
|
244
|
-
# # => "\"hello\""
|
|
245
|
-
#
|
|
246
|
-
# @return [String]
|
|
247
|
-
def inspect
|
|
248
|
-
`return '"' + #{self} + '"';`
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
# Returns the {Symbol} corresponding to `self`, creating the symbol if it did
|
|
252
|
-
# not previously exist.
|
|
253
|
-
#
|
|
254
|
-
# @example
|
|
255
|
-
# "Koala".to_sym
|
|
256
|
-
# # => :Koala
|
|
257
|
-
# s = 'cat'.to_sym
|
|
258
|
-
# # => :cat
|
|
259
|
-
# s == :cat
|
|
260
|
-
# # => true
|
|
261
|
-
# s = '@cat'.to_sym
|
|
262
|
-
# # => :@cat
|
|
263
|
-
# s == :@cat
|
|
264
|
-
# # => true
|
|
265
|
-
#
|
|
266
|
-
# This can also be used to create symbols that cannot be represented using the
|
|
267
|
-
# :xxxx notation.
|
|
268
|
-
#
|
|
269
|
-
# @example
|
|
270
|
-
# 'cat and dog'.to_sym
|
|
271
|
-
# # => :"cat and dog"
|
|
272
|
-
#
|
|
273
|
-
# @return [Symbol]
|
|
274
|
-
def intern
|
|
275
|
-
`return #{self}.Y(#{self});`
|
|
276
|
-
end
|
|
277
|
-
|
|
278
|
-
alias_method :to_sym, :intern
|
|
279
|
-
|
|
280
|
-
# Returns the character length of `str`.
|
|
281
|
-
#
|
|
282
|
-
# @return [Number] length of string
|
|
283
|
-
def length
|
|
284
|
-
`return #{self}.length;`
|
|
285
|
-
end
|
|
286
|
-
|
|
287
|
-
alias_method :size, :length
|
|
288
|
-
|
|
289
|
-
# Returns a copy of `self` with leading whitespace removed. See also
|
|
290
|
-
# {String#rstrip} and {String#strip}.
|
|
291
|
-
#
|
|
292
|
-
# @example
|
|
293
|
-
# " hello ".lstrip
|
|
294
|
-
# # => "hello "
|
|
295
|
-
# "hello".lstrip
|
|
296
|
-
# # => "hello"
|
|
297
|
-
#
|
|
298
|
-
# @return [String]
|
|
299
|
-
def lstrip
|
|
300
|
-
`return #{self}.replace(/^\s*/, "");`
|
|
301
|
-
end
|
|
302
|
-
|
|
303
|
-
# Returns a new string with the characters from `self` in reverse order.
|
|
304
|
-
#
|
|
305
|
-
# @example
|
|
306
|
-
# "stressed".reverse
|
|
307
|
-
# # => "desserts"
|
|
308
|
-
#
|
|
309
|
-
# @return [String]
|
|
310
|
-
def reverse
|
|
311
|
-
`return #{self}.split('').reverse().join('');`
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
def slice(start, finish)
|
|
317
|
-
`return #{self}.substr(#{start}, #{finish});`
|
|
318
|
-
end
|
|
319
|
-
|
|
320
|
-
def to_s
|
|
321
|
-
self
|
|
322
|
-
end
|
|
323
|
-
|
|
324
|
-
def split(str)
|
|
325
|
-
`return #{self}.split(#{str});`
|
|
326
|
-
end
|
|
327
|
-
|
|
328
|
-
end
|