Sha256: 24938d846aa1c7e20475a231337239d43b618524d85cb336a2efccbb0eefb4a7

Contents?: true

Size: 1.16 KB

Versions: 7

Compression:

Stored size: 1.16 KB

Contents

class Array

  # Inverse of #delete_if.
  #
  #   [1,2,3].delete_unless{ |x| x < 2 }
  #   => [1,2]
  #
  #  CREDIT: Daniel Schierbeck

  def delete_unless(&block)
    delete_if { |element| not block.call(element) }
  end

  # Delete multiple values from array.
  #
  #   a = [1,2,3,4]
  #   a.delete_values(1,2)   #=> [1,2]
  #   a                      #=> [3,4]
  #
  # CREDIT: Trans

  def delete_values(*values)
    d = []
    values.each{ |v| d << delete(v) }
    d
  end

  # Delete multiple values from array given
  # indexes or index range.
  #
  #   a = [1,2,3,4]
  #   a.delete_values_at(1,2)   #=> [2,3]
  #   a                         #=> [1,4]
  #   a = [1,2,3,4]
  #   a.delete_values_at(0..2)  #=> [1,2,3]
  #   a                         #=> [4]
  #
  # NOTE: It would be nice to see #delete_at incorporate this
  # funcitonaility.
  #
  #  CREDIT: Trans

  def delete_values_at(*selectors)
    idx = []
    selectors.each{ |i|
      case i
      when Range
        idx.concat( i.to_a )
      else
        idx << i.to_i
      end
    }
    idx.uniq!
    dvals = values_at(*idx)
    idx = (0...size).to_a - idx
    self.replace( values_at(*idx) )
    return dvals
  end

end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
facets-2.4.0 lib/facets/array/delete.rb
facets-2.4.1 lib/facets/array/delete.rb
facets-2.4.2 lib/core/facets/array/delete.rb
facets-2.4.3 lib/core/facets/array/delete.rb
facets-2.4.4 lib/core/facets/array/delete.rb
facets-2.4.5 lib/core/facets/array/delete.rb
mack-facets-0.8.2 lib/gems/facets-2.4.5/lib/core/facets/array/delete.rb