module FlatFile::QSV

Read data exports from Postico

Constants

OPTIONS

ruby-doc.org/stdlib-2.6.1/libdoc/csv/rdoc/CSV.html#method-c-new @return [Hash]

Public Class Methods

from_file(filepath) click to toggle source

@param filepath [String] Path to the file. @return [Array<Hash{String => String}>]

# File lib/flat_file/qsv.rb, line 18
def self.from_file(filepath)
  # ::CSV::Converters[:json] = ->(s) { self.parse_postico_json(s) }
  return ::CSV.read(filepath, self.options).map(&:to_hash)
end
options() click to toggle source

@return [Hash]

# File lib/flat_file/qsv.rb, line 24
def self.options()
  custom_converter = ->(value, field_info) { self.parse_postico_json(value, field_info) }
  return {
    col_sep: ";",
    headers: true,
    quote_char: '"',
    converters: [custom_converter],
  }
end
parse_postico_json(value, _field_info) click to toggle source

@param value [Object] @param _field_info [Hash] @return [Object]

# File lib/flat_file/qsv.rb, line 37
def self.parse_postico_json(value, _field_info)
  return value if value.nil?()
  return value if value.length == 0
  return value unless value[0] == "{"
  return ::JSON.parse(value)
rescue ::JSON::ParserError => e
  # if defined?(Rails)
  #   Rails.logger.error({
  #     message: "Rescued from 'JSON::ParserError' in parse_postico_json",
  #     error: e,
  #   })
  # end
  return value
rescue StandardError => e
  # if defined?(Rails)
  #   Rails.logger.error({
  #     message: "Rescued from 'StandardError' in parse_postico_json",
  #     error: e,
  #   })
  # end
  return value
end