class CsvBlueprints::Blueprint

Public Class Methods

new() click to toggle source
# File lib/csv_blueprints/blueprint.rb, line 45
def initialize
  @columns = []
end

Public Instance Methods

column(name, value: nil) click to toggle source
# File lib/csv_blueprints/blueprint.rb, line 49
def column(name, value: nil)
  @columns << column_for_value(name, value)
end
column_names() click to toggle source
# File lib/csv_blueprints/blueprint.rb, line 63
def column_names
  @columns.map(&:name)
end
columns(*names, value:) click to toggle source
# File lib/csv_blueprints/blueprint.rb, line 53
def columns(*names, value:)
  wrapped_value = value.respond_to?(:call) ? RepeatedValue.new(value, names.length) : value

  names.each { |name| column(name, value: wrapped_value) }
end
default_values(row) click to toggle source
# File lib/csv_blueprints/blueprint.rb, line 67
def default_values(row)
  Hash[@columns.map { |c| [c.name, c.value_for(row)] }]
end
plan() click to toggle source
# File lib/csv_blueprints/blueprint.rb, line 59
def plan
  PlanBuilder.new(self)
end

Private Instance Methods

column_for_value(name, value) click to toggle source
# File lib/csv_blueprints/blueprint.rb, line 73
def column_for_value(name, value)
  case value
  when :blank
    Column.new(name, nil)
  when :sequence
    Column.new(name, -> i { i })
  else
    Column.new(name, value)
  end
end