Sha256: efac4051b612fc7180a5acf42f05ca4c04f913f0944dc0ad54f6b24d9e26dd7c
Contents?: true
Size: 1.69 KB
Versions: 2
Compression:
Stored size: 1.69 KB
Contents
class Importer class Row attr_reader :line, :values, :errors def initialize(importer, line, value_hash = nil) @importer = importer @line = line set_values(value_hash) @errors = [] end def set_values(value_hash) @values = value_hash end # True when all columns have a non-nil value, useful in filtering out junk # rows. Pass in one or more keys to check only those keys for presence. def all?(*keys) keys.flatten! if keys.any? # Check only the specified keys valid = true keys.each do |key| unless @values.has_key?(key) raise "Unknown column key :#{key} in call to Row#all?" end valid = valid && !@values[key].nil? end valid else # Check all value keys @values.values.all? {|v| !v.nil? } end end # True when all row columns have nil values. def empty? @values.values.all?(&:nil?) end # Returns the value of a column. def [](column_key) @values[column_key] end # The row's name, e.g. 'Row 4' def to_s "Row #{@line}" end # This row's values as a hash of :column_key => <parsed + validated value> def to_h @values.dup end def to_hash ; to_h ; end def add_error(msg) @importer.add_error(msg, :row => self) end def has_errors? @errors && @errors.count > 0 end # Return a map of column key to Error, intended for use in error reporting. def error_map map = {} @errors.each do |err| map[err.column.key] = err end map end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
iron-import-0.8.2 | lib/iron/import/row.rb |
iron-import-0.8.1 | lib/iron/import/row.rb |