Method: CSV::Row#delete_if

Defined in:
lib/csv/row.rb

#delete_if(&block) ⇒ Object

:call-seq:

row.delete_if {|header, value| ... } -> self

Removes fields from self as selected by the block; returns self.

Removes each field for which the block returns a truthy value:

source = "Name,Name,Name\nFoo,Bar,Baz\n"
table = CSV.parse(source, headers: true)
row = table[0]
row.delete_if {|header, value| value.start_with?('B') } # => true
row # => #<CSV::Row "Name":"Foo">
row.delete_if {|header, value| header.start_with?('B') } # => false

If no block is given, returns a new Enumerator:

row.delete_if # => #<Enumerator: #<CSV::Row "Name":"Foo">:delete_if>


476
477
478
479
480
481
482
# File 'lib/csv/row.rb', line 476

def delete_if(&block)
  return enum_for(__method__) { size } unless block_given?

  @row.delete_if(&block)

  self  # for chaining
end