opal 0.3.22 → 0.3.25
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/.travis.yml +1 -1
- data/Gemfile +1 -9
- data/README.md +46 -5
- data/Rakefile +4 -94
- data/core/array.rb +13 -46
- data/core/basic_object.rb +2 -12
- data/core/boolean.rb +1 -1
- data/core/browser.js +27 -1
- data/core/class.rb +1 -7
- data/core/enumerable.rb +3 -15
- data/core/error.rb +2 -4
- data/core/hash.rb +9 -18
- data/core/json.rb +5 -0
- data/core/kernel.rb +2 -21
- data/core/load_order +5 -7
- data/core/nil_class.rb +4 -0
- data/core/numeric.rb +0 -6
- data/core/object.rb +1 -5
- data/core/proc.rb +0 -4
- data/core/range.rb +10 -17
- data/core/regexp.rb +2 -6
- data/core/runtime.js +2 -26
- data/core/string.rb +28 -26
- data/core/struct.rb +0 -4
- data/core/{erb.rb → templates.rb} +6 -4
- data/core/time.rb +7 -19
- data/core/top_self.rb +2 -2
- data/lib/opal.rb +13 -2
- data/lib/opal/builder.rb +3 -3
- data/lib/opal/erb_parser.rb +3 -2
- data/lib/opal/parser.rb +10 -2
- data/lib/opal/rake_task.rb +10 -2
- data/lib/opal/scope.rb +6 -1
- data/lib/opal/version.rb +1 -1
- data/opal.gemspec +1 -3
- data/spec/core/array/constructor_spec.rb +0 -8
- data/spec/core/enumerable/drop_while_spec.rb +0 -4
- data/spec/core/enumerable/find_index_spec.rb +0 -4
- data/spec/core/enumerable/select_spec.rb +13 -0
- data/spec/core/kernel/respond_to_spec.rb +4 -0
- data/spec/core/string/empty_spec.rb +0 -1
- data/spec/core/string/include_spec.rb +0 -6
- data/spec/core/string/swapcase_spec.rb +0 -5
- data/spec/core/string/to_s_spec.rb +0 -7
- data/spec/core/string/to_str_spec.rb +0 -7
- data/spec/lib/erb_parser/simple.erb +1 -0
- data/spec/{grammar → lib/grammar}/alias_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/and_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/array_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/attrasgn_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/begin_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/block_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/break_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/call_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/class_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/const_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/cvar_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/def_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/false_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/file_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/gvar_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/hash_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/iasgn_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/if_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/iter_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/ivar_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/lambda_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/lasgn_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/line_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/lvar_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/masgn_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/module_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/nil_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/not_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/op_asgn1_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/op_asgn2_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/or_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/return_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/sclass_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/self_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/str_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/super_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/true_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/undef_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/unless_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/while_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/xstr_spec.rb +0 -0
- data/spec/{grammar → lib/grammar}/yield_spec.rb +0 -0
- data/spec/{parser → lib/parser}/simple_spec.rb +1 -1
- data/spec/opal/erb/erb_spec.rb +10 -2
- data/spec/opal/string/demodulize_spec.rb +10 -0
- data/spec/opal/string/underscore_spec.rb +17 -0
- data/spec/spec_helper.rb +1 -1
- data/vendor/opal_spec_runner.js +43 -0
- metadata +99 -114
- data/.rspec +0 -2
- data/docs/index.md +0 -616
- data/docs/post.html +0 -3
- data/docs/pre.html +0 -35
- data/docs/try.html +0 -52
- data/spec/core/string/fixtures/classes.rb +0 -3
- data/spec/opal/array/subclassing_spec.rb +0 -32
- data/spec/opal/exception/subclassing_spec.rb +0 -17
- data/spec/opal/string/subclassing_spec.rb +0 -26
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
source :rubygems
|
|
2
|
-
|
|
3
2
|
gemspec
|
|
4
3
|
|
|
5
4
|
gem "rake"
|
|
@@ -11,12 +10,5 @@ end
|
|
|
11
10
|
|
|
12
11
|
# running tests on command line
|
|
13
12
|
group :testing do
|
|
14
|
-
gem
|
|
15
|
-
gem 'opal-spec', :git => 'git://github.com/adambeynon/opal-spec.git'
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
group :docs do
|
|
19
|
-
gem "redcarpet"
|
|
20
|
-
gem "albino"
|
|
21
|
-
gem "rack"
|
|
13
|
+
gem 'opal-spec', :git => 'git://github.com/opal/opal-spec.git'
|
|
22
14
|
end
|
data/README.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Opal
|
|
2
2
|
|
|
3
|
-
[](http://travis-ci.org/opal/opal)
|
|
4
4
|
|
|
5
5
|
Opal is a ruby to javascript source-to-source compiler. It also has an
|
|
6
6
|
implementation of the ruby corelib.
|
|
7
7
|
|
|
8
|
-
Opal is [hosted on github](http://github.com/
|
|
9
|
-
is a Freenode IRC channel at `#opal`.
|
|
8
|
+
Opal is [hosted on github](http://github.com/opal/opal), and there
|
|
9
|
+
is a Freenode IRC channel at `#opal`. There is also a [google group for opal](http://groups.google.com/forum/#!forum/opalrb).
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
@@ -17,7 +17,7 @@ See the website, [http://opalrb.org](http://opalrb.org).
|
|
|
17
17
|
Build the runtime, tests and dependencies:
|
|
18
18
|
|
|
19
19
|
```
|
|
20
|
-
rake opal
|
|
20
|
+
rake opal
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Run tests using phantom.js runner:
|
|
@@ -26,6 +26,47 @@ Run tests using phantom.js runner:
|
|
|
26
26
|
rake test
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
Alternatively, after building, you can open `spec/index.html` in any
|
|
30
|
+
web browser.
|
|
31
|
+
|
|
32
|
+
## Code Overview
|
|
33
|
+
|
|
34
|
+
### core
|
|
35
|
+
|
|
36
|
+
The `core` directory holds the opal runtime and corelib implemented in
|
|
37
|
+
ruby and javascript. These are built using `rake opal`, as above.
|
|
38
|
+
|
|
39
|
+
### lib
|
|
40
|
+
|
|
41
|
+
The `lib` directory holds the opal parser/compiler used to compile ruby
|
|
42
|
+
into javascript. It is also built ready for the browser into `opal-parser.js`
|
|
43
|
+
to allow compilation in any javascript environment.
|
|
44
|
+
|
|
45
|
+
### spec
|
|
46
|
+
|
|
47
|
+
* **core** contains rubyspecs that apply to opal.
|
|
48
|
+
* **language** applicable specs from rubyspec for testing language semantics
|
|
49
|
+
* **opal** tests for extra methods/features in opal not found in standard ruby
|
|
50
|
+
* **lib** specs for opal lib (parser, erb\_parser, grammar etc)
|
|
51
|
+
|
|
29
52
|
## License
|
|
30
53
|
|
|
31
|
-
|
|
54
|
+
Copyright (C) 2012 by Adam Beynon
|
|
55
|
+
|
|
56
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
57
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
58
|
+
in the Software without restriction, including without limitation the rights
|
|
59
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
60
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
61
|
+
furnished to do so, subject to the following conditions:
|
|
62
|
+
|
|
63
|
+
The above copyright notice and this permission notice shall be included in
|
|
64
|
+
all copies or substantial portions of the Software.
|
|
65
|
+
|
|
66
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
67
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
68
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
69
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
70
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
71
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
72
|
+
THE SOFTWARE.
|
data/Rakefile
CHANGED
|
@@ -1,37 +1,17 @@
|
|
|
1
|
-
require '
|
|
2
|
-
require 'bundler'
|
|
3
|
-
Bundler.setup
|
|
1
|
+
require 'bundler/setup'
|
|
4
2
|
|
|
5
|
-
require 'opal'
|
|
6
3
|
require 'opal/version'
|
|
7
4
|
require 'opal/rake_task'
|
|
8
5
|
|
|
9
6
|
Opal::RakeTask.new do |t|
|
|
10
7
|
t.dependencies = %w(opal-spec)
|
|
11
8
|
t.files = [] # we handle this by Opal.runtime instead
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
desc "Build opal-parser ready for browser"
|
|
15
|
-
task :parser do
|
|
16
|
-
puts " * build/opal-parser.js"
|
|
17
|
-
File.open('build/opal-parser.js', 'w+') do |o|
|
|
18
|
-
o.puts Opal::Builder.new(:files => %w(racc.rb strscan.rb), :dir => 'core').build
|
|
19
|
-
o.puts Opal.build_gem('opal')
|
|
20
|
-
o.puts File.read('core/browser.js')
|
|
21
|
-
end
|
|
9
|
+
t.parser = true # we want to also build opal-parser.js (used in specs)
|
|
22
10
|
end
|
|
23
11
|
|
|
24
12
|
desc "Run tests"
|
|
25
13
|
task :test do
|
|
26
|
-
|
|
27
|
-
out = 'build/phantom_runner.js'
|
|
28
|
-
|
|
29
|
-
File.open(out, 'w+') do |o|
|
|
30
|
-
src.each { |s| o.write File.read(s) }
|
|
31
|
-
o.write "Opal.require('opal-spec/autorun');"
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
sh "phantomjs build/phantom_runner.js"
|
|
14
|
+
sh "phantomjs vendor/opal_spec_runner.js spec/index.html"
|
|
35
15
|
end
|
|
36
16
|
|
|
37
17
|
task :default => :test
|
|
@@ -67,74 +47,4 @@ def gzip(str)
|
|
|
67
47
|
i.close_write
|
|
68
48
|
return i.read
|
|
69
49
|
end
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
namespace :docs do
|
|
73
|
-
desc "Clone repo"
|
|
74
|
-
task :clone do
|
|
75
|
-
if File.exists? 'gh-pages'
|
|
76
|
-
Dir.chdir('gh-pages') { sh 'git pull origin gh-pages' }
|
|
77
|
-
else
|
|
78
|
-
FileUtils.mkdir_p 'gh-pages'
|
|
79
|
-
Dir.chdir('gh-pages') do
|
|
80
|
-
sh 'git clone git@github.com:/adambeynon/opal.git .'
|
|
81
|
-
sh 'git checkout gh-pages'
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
desc "Build docs"
|
|
87
|
-
task :build do
|
|
88
|
-
require 'redcarpet'
|
|
89
|
-
require 'albino'
|
|
90
|
-
|
|
91
|
-
klass = Class.new(Redcarpet::Render::HTML) do
|
|
92
|
-
def block_code(code, language)
|
|
93
|
-
Albino.new(code, language || :text).colorize
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
markdown = Redcarpet::Markdown.new(klass, :fenced_code_blocks => true)
|
|
98
|
-
|
|
99
|
-
File.open('gh-pages/index.html', 'w+') do |o|
|
|
100
|
-
puts " * index.html"
|
|
101
|
-
o.write File.read('docs/pre.html')
|
|
102
|
-
o.write markdown.render(File.read "docs/index.md")
|
|
103
|
-
o.write File.read('docs/post.html')
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
%w(try).each do |src|
|
|
107
|
-
puts " * src.md"
|
|
108
|
-
File.open("gh-pages/#{src}.html", 'w+') do |out|
|
|
109
|
-
out.write File.read("docs/pre.html")
|
|
110
|
-
out.write File.read("docs/#{src}.html")
|
|
111
|
-
out.write File.read("docs/post.html")
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
%w(opal opal-parser).each do |src|
|
|
116
|
-
puts " * #{src}.js"
|
|
117
|
-
FileUtils.cp "build/#{src}.js", "gh-pages/#{src}.js"
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
task :server do
|
|
122
|
-
require 'rack'
|
|
123
|
-
server = Class.new(Rack::Server) do
|
|
124
|
-
def app
|
|
125
|
-
Rack::Directory.new('gh-pages')
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
server.new.start
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
desc "commit and push"
|
|
133
|
-
task :push do
|
|
134
|
-
Dir.chdir('gh-pages') do
|
|
135
|
-
sh "git add ."
|
|
136
|
-
sh "git commit -a -m \"Documentation update #{Time.new}\""
|
|
137
|
-
sh "git push origin gh-pages"
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
end
|
|
50
|
+
end
|
data/core/array.rb
CHANGED
|
@@ -7,18 +7,14 @@ class Array < `Array`
|
|
|
7
7
|
|
|
8
8
|
def self.[](*objects)
|
|
9
9
|
%x{
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
result.splice.apply(result, [0, 0].concat(objects));
|
|
13
|
-
|
|
14
|
-
return result;
|
|
10
|
+
return objects;
|
|
15
11
|
}
|
|
16
12
|
end
|
|
17
13
|
|
|
18
14
|
def self.new(size, obj = nil)
|
|
19
|
-
arr = allocate
|
|
20
|
-
|
|
21
15
|
%x{
|
|
16
|
+
var arr = [];
|
|
17
|
+
|
|
22
18
|
if (size && size._isArray) {
|
|
23
19
|
for (var i = 0; i < size.length; i++) {
|
|
24
20
|
arr[i] = size[i];
|
|
@@ -29,9 +25,9 @@ class Array < `Array`
|
|
|
29
25
|
arr[i] = obj;
|
|
30
26
|
}
|
|
31
27
|
}
|
|
32
|
-
}
|
|
33
28
|
|
|
34
|
-
|
|
29
|
+
return arr;
|
|
30
|
+
}
|
|
35
31
|
end
|
|
36
32
|
|
|
37
33
|
def &(other)
|
|
@@ -223,8 +219,6 @@ class Array < `Array`
|
|
|
223
219
|
end
|
|
224
220
|
|
|
225
221
|
def collect(&block)
|
|
226
|
-
return enum_for :collect unless block_given?
|
|
227
|
-
|
|
228
222
|
%x{
|
|
229
223
|
var result = [];
|
|
230
224
|
|
|
@@ -241,8 +235,6 @@ class Array < `Array`
|
|
|
241
235
|
end
|
|
242
236
|
|
|
243
237
|
def collect!(&block)
|
|
244
|
-
return enum_for :collect! unless block_given?
|
|
245
|
-
|
|
246
238
|
%x{
|
|
247
239
|
for (var i = 0, length = #{self}.length, val; i < length; i++) {
|
|
248
240
|
if ((val = block.call(__context, #{self}[i])) === __breaker) {
|
|
@@ -351,8 +343,6 @@ class Array < `Array`
|
|
|
351
343
|
end
|
|
352
344
|
|
|
353
345
|
def delete_if(&block)
|
|
354
|
-
return enum_for :delete_if unless block_given?
|
|
355
|
-
|
|
356
346
|
%x{
|
|
357
347
|
for (var i = 0, length = #{self}.length, value; i < length; i++) {
|
|
358
348
|
if ((value = block.call(__context, #{self}[i])) === __breaker) {
|
|
@@ -376,8 +366,6 @@ class Array < `Array`
|
|
|
376
366
|
end
|
|
377
367
|
|
|
378
368
|
def drop_while(&block)
|
|
379
|
-
return enum_for :drop_while unless block_given?
|
|
380
|
-
|
|
381
369
|
%x{
|
|
382
370
|
for (var i = 0, length = #{self}.length, value; i < length; i++) {
|
|
383
371
|
if ((value = block(__context, #{self}[i])) === __breaker) {
|
|
@@ -396,8 +384,6 @@ class Array < `Array`
|
|
|
396
384
|
alias dup clone
|
|
397
385
|
|
|
398
386
|
def each(&block)
|
|
399
|
-
return enum_for :each unless block_given?
|
|
400
|
-
|
|
401
387
|
`for (var i = 0, length = #{self}.length; i < length; i++) {`
|
|
402
388
|
yield `#{self}[i]`
|
|
403
389
|
`}`
|
|
@@ -406,8 +392,6 @@ class Array < `Array`
|
|
|
406
392
|
end
|
|
407
393
|
|
|
408
394
|
def each_index(&block)
|
|
409
|
-
return enum_for :each_index unless block_given?
|
|
410
|
-
|
|
411
395
|
`for (var i = 0, length = #{self}.length; i < length; i++) {`
|
|
412
396
|
yield `i`
|
|
413
397
|
`}`
|
|
@@ -416,8 +400,6 @@ class Array < `Array`
|
|
|
416
400
|
end
|
|
417
401
|
|
|
418
402
|
def each_with_index(&block)
|
|
419
|
-
return enum_for :each_with_index unless block_given?
|
|
420
|
-
|
|
421
403
|
`for (var i = 0, length = #{self}.length; i < length; i++) {`
|
|
422
404
|
yield `#{self}[i]`, `i`
|
|
423
405
|
`}`
|
|
@@ -533,9 +515,6 @@ class Array < `Array`
|
|
|
533
515
|
|
|
534
516
|
def index(object, &block)
|
|
535
517
|
%x{
|
|
536
|
-
if (block === nil && object == null) {
|
|
537
|
-
return #{enum_for :index};
|
|
538
|
-
}
|
|
539
518
|
if (block !== nil) {
|
|
540
519
|
for (var i = 0, length = #{self}.length, value; i < length; i++) {
|
|
541
520
|
if ((value = block.call(__context, '', #{self}[i])) === __breaker) {
|
|
@@ -560,8 +539,6 @@ class Array < `Array`
|
|
|
560
539
|
end
|
|
561
540
|
|
|
562
541
|
def inject(initial, &block)
|
|
563
|
-
return enum_for :inject unless block_given?
|
|
564
|
-
|
|
565
542
|
%x{
|
|
566
543
|
var result, i;
|
|
567
544
|
|
|
@@ -640,7 +617,6 @@ class Array < `Array`
|
|
|
640
617
|
end
|
|
641
618
|
|
|
642
619
|
def keep_if(&block)
|
|
643
|
-
return enum_for :keep_if unless block_given?
|
|
644
620
|
%x{
|
|
645
621
|
for (var i = 0, length = #{self}.length, value; i < length; i++) {
|
|
646
622
|
if ((value = block(__context, #{self}[i])) === __breaker) {
|
|
@@ -729,8 +705,6 @@ class Array < `Array`
|
|
|
729
705
|
end
|
|
730
706
|
|
|
731
707
|
def reject(&block)
|
|
732
|
-
return enum_for :reject unless block_given?
|
|
733
|
-
|
|
734
708
|
%x{
|
|
735
709
|
var result = [];
|
|
736
710
|
|
|
@@ -748,8 +722,6 @@ class Array < `Array`
|
|
|
748
722
|
end
|
|
749
723
|
|
|
750
724
|
def reject!(&block)
|
|
751
|
-
return enum_for :reject! unless block_given?
|
|
752
|
-
|
|
753
725
|
%x{
|
|
754
726
|
var original = #{self}.length;
|
|
755
727
|
|
|
@@ -778,9 +750,7 @@ class Array < `Array`
|
|
|
778
750
|
}
|
|
779
751
|
end
|
|
780
752
|
|
|
781
|
-
|
|
782
|
-
`#{self}.reverse()`
|
|
783
|
-
end
|
|
753
|
+
alias_native :reverse, :reverse
|
|
784
754
|
|
|
785
755
|
def reverse!
|
|
786
756
|
%x{
|
|
@@ -791,16 +761,12 @@ class Array < `Array`
|
|
|
791
761
|
end
|
|
792
762
|
|
|
793
763
|
def reverse_each(&block)
|
|
794
|
-
return enum_for :reverse_each unless block_given?
|
|
795
|
-
|
|
796
764
|
reverse.each &block
|
|
797
765
|
|
|
798
766
|
self
|
|
799
767
|
end
|
|
800
768
|
|
|
801
769
|
def rindex(object, &block)
|
|
802
|
-
return enum_for :rindex unless block_given?
|
|
803
|
-
|
|
804
770
|
%x{
|
|
805
771
|
if (block !== nil) {
|
|
806
772
|
for (var i = #{self}.length - 1, value; i >= 0; i--) {
|
|
@@ -826,8 +792,6 @@ class Array < `Array`
|
|
|
826
792
|
end
|
|
827
793
|
|
|
828
794
|
def select(&block)
|
|
829
|
-
return enum_for :select unless block_given?
|
|
830
|
-
|
|
831
795
|
%x{
|
|
832
796
|
var result = [];
|
|
833
797
|
|
|
@@ -848,7 +812,6 @@ class Array < `Array`
|
|
|
848
812
|
end
|
|
849
813
|
|
|
850
814
|
def select!(&block)
|
|
851
|
-
return enum_for :select! unless block_given?
|
|
852
815
|
%x{
|
|
853
816
|
var original = #{self}.length;
|
|
854
817
|
|
|
@@ -872,7 +835,13 @@ class Array < `Array`
|
|
|
872
835
|
end
|
|
873
836
|
|
|
874
837
|
def shift(count)
|
|
875
|
-
|
|
838
|
+
%x{
|
|
839
|
+
if (#{self}.length === 0) {
|
|
840
|
+
return nil;
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
return count == null ? #{self}.shift() : #{self}.splice(0, count)
|
|
844
|
+
}
|
|
876
845
|
end
|
|
877
846
|
|
|
878
847
|
alias size length
|
|
@@ -902,8 +871,6 @@ class Array < `Array`
|
|
|
902
871
|
end
|
|
903
872
|
|
|
904
873
|
def take_while(&block)
|
|
905
|
-
return enum_for :take_while unless block_given?
|
|
906
|
-
|
|
907
874
|
%x{
|
|
908
875
|
var result = [];
|
|
909
876
|
|
data/core/basic_object.rb
CHANGED
|
@@ -8,13 +8,7 @@ class BasicObject
|
|
|
8
8
|
|
|
9
9
|
def __send__(symbol, *args, &block)
|
|
10
10
|
%x{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (!meth) {
|
|
14
|
-
return #{ method_missing symbol };
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return meth.apply(#{self}, args);
|
|
11
|
+
return #{self}['$' + symbol].apply(#{self}, args);
|
|
18
12
|
}
|
|
19
13
|
end
|
|
20
14
|
|
|
@@ -23,7 +17,7 @@ class BasicObject
|
|
|
23
17
|
alias eql? ==
|
|
24
18
|
alias equal? ==
|
|
25
19
|
|
|
26
|
-
def instance_eval(string, &block)
|
|
20
|
+
def instance_eval(string=undefined, &block)
|
|
27
21
|
%x{
|
|
28
22
|
if (block === nil) {
|
|
29
23
|
no_block_given();
|
|
@@ -42,8 +36,4 @@ class BasicObject
|
|
|
42
36
|
return block.apply(#{self}, args);
|
|
43
37
|
}
|
|
44
38
|
end
|
|
45
|
-
|
|
46
|
-
def method_missing(symbol, *args)
|
|
47
|
-
raise NoMethodError, "undefined method `#{symbol}` for #{inspect}"
|
|
48
|
-
end
|
|
49
39
|
end
|