class ExcelUtils::Sheets::Base

Attributes

name[R]
normalize_column_names[R]

Public Class Methods

new(name:, normalize_column_names: false) click to toggle source
# File lib/excel_utils/sheets/base.rb, line 9
def initialize(name:, normalize_column_names: false)
  @name = name
  @normalize_column_names = normalize_column_names
end

Public Instance Methods

column_names() click to toggle source
# File lib/excel_utils/sheets/base.rb, line 14
def column_names
  @column_names ||= normalize_column_names ? normalize_columns(first_row) : first_row
end
each() { |Hash| ... } click to toggle source
# File lib/excel_utils/sheets/base.rb, line 18
def each
  if column_names.any?
    each_row do |row|
      break if empty_row? row
      yield Hash[column_names.zip(row)]
    end
  end
end

Private Instance Methods

empty_row?(row) click to toggle source
# File lib/excel_utils/sheets/base.rb, line 35
def empty_row?(row)
  row.all? { |cell| cell.to_s.strip.empty? }
end
normalize_columns(names) click to toggle source
# File lib/excel_utils/sheets/base.rb, line 29
def normalize_columns(names)
  names.map do |name|
    Inflecto.underscore(name.strip.gsub(' ', '_')).to_sym
  end
end