Module: AdHocTemplate::RecordReader

Defined in:
lib/ad_hoc_template/record_reader.rb

Defined Under Namespace

Modules: CSVReader, DefaultFormReader, JSONReader, TSVReader, YAMLReader

Constant Summary collapse

FORMAT_NAME_TO_READER =
{
  yaml: YAMLReader,
  json: JSONReader,
  csv: CSVReader,
  tsv: TSVReader,
  default: DefaultFormReader,
}.tap {|h| h.default = DefaultFormReader }.freeze

Class Method Summary collapse

Class Method Details

.convert_values_to_string(data) ⇒ Object



465
466
467
468
469
470
471
472
473
# File 'lib/ad_hoc_template/record_reader.rb', line 465

def self.convert_values_to_string(data)
  data.each do |k, v|
    if v.kind_of? Array
      v.each {|sub_rec| convert_values_to_string(sub_rec) }
    elsif v && !v.kind_of?(String)
      data[k] = v.to_s
    end
  end
end

.dump(data_source, target_format = :default) ⇒ Object



448
449
450
# File 'lib/ad_hoc_template/record_reader.rb', line 448

def self.dump(data_source, target_format=:default)
  FORMAT_NAME_TO_READER[target_format].dump(data_source)
end

.parse_if_necessary(source) ⇒ Object



461
462
463
# File 'lib/ad_hoc_template/record_reader.rb', line 461

def self.parse_if_necessary(source)
  source.kind_of?(String) ? read_record(source) : source
end

.read_record(input, source_format = :default) ⇒ Object



452
453
454
455
456
457
458
459
# File 'lib/ad_hoc_template/record_reader.rb', line 452

def self.read_record(input, source_format=:default)
  case source_format
  when :csv, :tsv, Hash
    CSVReader.read_record(input, source_format)
  else
    FORMAT_NAME_TO_READER[source_format].read_record(input)
  end
end