Sha256: a56ebabcb787cc3c2e1675e0b37d4b3bdbc1a3b1e7c2f861e3f74313bf92f00b

Contents?: true

Size: 1001 Bytes

Versions: 8

Compression:

Stored size: 1001 Bytes

Contents

class Array

  # CREDIT Daniel Schierbeck

  # Inverse of #delete_if.

  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]
  #
  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]
  #

  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

8 entries across 8 versions & 1 rubygems

Version Path
facets-2.0.2 lib/core/facets/array/delete.rb
facets-2.1.0 lib/core/facets/array/delete.rb
facets-2.1.1 lib/core/facets/array/delete.rb
facets-2.0.3 lib/core/facets/array/delete.rb
facets-2.0.4 lib/core/facets/array/delete.rb
facets-2.0.5 lib/core/facets/array/delete.rb
facets-2.1.2 lib/core/facets/array/delete.rb
facets-2.1.3 lib/core/facets/array/delete.rb