Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: opal/opal
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: db85d65a3105
Choose a base ref
...
head repository: opal/opal
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 47e356e47cd1
Choose a head ref
  • 4 commits
  • 1 file changed
  • 1 contributor

Commits on Oct 26, 2013

  1. Cleanup Array#collect

    meh committed Oct 26, 2013
    Copy the full SHA
    a02f9e6 View commit details
  2. Cleanup Array#collect!

    meh committed Oct 26, 2013
    Copy the full SHA
    9ca6b80 View commit details
  3. Cleanup Array#each

    meh committed Oct 26, 2013
    Copy the full SHA
    bebe8bc View commit details
  4. Cleanup Array#each_index

    meh committed Oct 26, 2013
    Copy the full SHA
    47e356e View commit details
Showing with 23 additions and 17 deletions.
  1. +23 −17 corelib/array.rb
40 changes: 23 additions & 17 deletions corelib/array.rb
Original file line number Diff line number Diff line change
@@ -379,9 +379,10 @@ def collect(&block)
%x{
var result = [];
for (var i = 0, length = self.length; i < length; i++) {
var value = Opal.$yield1(block, self[i]);
for (var i = 0, length = #{self}.length, value; i < length; i++) {
if ((value = block(#{self}[i])) === $breaker) {
if (value === $breaker) {
return $breaker.$v;
}
@@ -393,13 +394,17 @@ def collect(&block)
end

def collect!(&block)
return enum_for :collect! unless block_given?

%x{
for (var i = 0, length = #{self}.length, val; i < length; i++) {
if ((val = block(#{self}[i])) === $breaker) {
for (var i = 0, length = self.length; i < length; i++) {
var value = Opal.$yield1(block, self[i]);
if (value === $breaker) {
return $breaker.$v;
}
#{self}[i] = val;
self[i] = value;
}
}

@@ -519,16 +524,11 @@ def each(&block)
return enum_for :each unless block_given?

%x{
if (block.length > 1) {
for (var i = 0, length = #{self}.length, el; i < length; i++) {
el = #{self}[i];
if (!el._isArray) el = [el];
for (var i = 0, length = self.length; i < length; i++) {
var value = Opal.$yield1(block, self[i]);
if (block.apply(null, el) === $breaker) return $breaker.$v;
}
} else {
for (var i = 0, length = #{self}.length; i < length; i++) {
if (block(#{self}[i]) === $breaker) return $breaker.$v;
if (value == $breaker) {
return $breaker.$v;
}
}
}
@@ -539,9 +539,15 @@ def each(&block)
def each_index(&block)
return enum_for :each_index unless block_given?

`for (var i = 0, length = #{self}.length; i < length; i++) {`
yield `i`
`}`
%x{
for (var i = 0, length = self.length; i < length; i++) {
var value = Opal.$yield1(block, i);
if (value === $breaker) {
return $breaker.$v;
}
}
}

self
end