class DataAccessorModule

Public Class Methods

new( mapping ) click to toggle source
# File lib/csv_madness/data_accessor_module.rb, line 2
def initialize( mapping )
  @column_accessors = []
  remap_accessors( mapping )
end

Public Instance Methods

install_column_accessors( column, index ) click to toggle source
# File lib/csv_madness/data_accessor_module.rb, line 7
  def install_column_accessors( column, index )
    @column_accessors << column
    eval <<-EOF
      self.send( :define_method, :#{column} ) do
        self.csv_data[#{index}]
      end
      
      self.send( :define_method, :#{column}= ) do |val|
        self.csv_data[#{index}] = val
      end
    EOF
  end
remap_accessors( mapping ) click to toggle source
# File lib/csv_madness/data_accessor_module.rb, line 35
def remap_accessors( mapping )
  remove_all_column_accessors
  
  @mapping = mapping
  
  for column, index in @mapping
    install_column_accessors( column, index )
  end
end
remove_all_column_accessors() click to toggle source
# File lib/csv_madness/data_accessor_module.rb, line 25
def remove_all_column_accessors
  @column_accessors ||= []    
  
  for sym in @column_accessors
    remove_column_accessors( sym )
  end
  
  @column_accessors = []    
end
remove_column_accessors( column ) click to toggle source
# File lib/csv_madness/data_accessor_module.rb, line 20
def remove_column_accessors( column )
  self.send( :remove_method, column )
  self.send( :remove_method, :"#{column}=" )
end