class ArrayTransform::Operations::CopyColumn

Attributes

column_header[R]
data[R]
new_column_header[R]

Public Class Methods

new( column_header: nil, column_index: nil, data:, new_column_header: nil ) click to toggle source
# File lib/array_transform/operations/copy_column.rb, line 6
def initialize(
  column_header: nil,
  column_index: nil,
  data:,
  new_column_header: nil
)
  @column_header = column_header
  @column_index = column_index
  @data = data
  @new_column_header = new_column_header
end

Public Instance Methods

call() click to toggle source
# File lib/array_transform/operations/copy_column.rb, line 20
def call
  validate!
  copy_column
end

Private Instance Methods

column_header_index() click to toggle source
# File lib/array_transform/operations/copy_column.rb, line 33
def column_header_index
  data[0] && data[0].index(column_header)
end
column_index() click to toggle source
# File lib/array_transform/operations/copy_column.rb, line 29
def column_index
  @column_index ||= column_header_index
end
copy_column() click to toggle source
# File lib/array_transform/operations/copy_column.rb, line 37
def copy_column
  column_index && data.each do |row|
    row << row[column_index]
  end
  new_column_header && data[0][-1] = new_column_header
end
validate!() click to toggle source
# File lib/array_transform/operations/copy_column.rb, line 44
def validate!
  if @column_index && @column_header
    raise(ArgumentError, "can only specify one of :column_index or :column_header")
  end
end