Module: FlatFile::QSV
- Defined in:
- lib/flat_file/qsv.rb
Overview
Read data exports from Postico
Constant Summary collapse
- OPTIONS =
{ col_sep: ";", headers: true, quote_char: "'", converters: ::CSV::Converters.keys + [:json], }.freeze()
Class Method Summary collapse
- .from_file(filepath) ⇒ Array<Hash{String => String}>
- .options ⇒ Hash
- .parse_postico_json(value, _field_info) ⇒ Object
Class Method Details
.from_file(filepath) ⇒ Array<Hash{String => String}>
18 19 20 21 |
# 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.).map(&:to_hash) end |
.options ⇒ Hash
24 25 26 27 28 29 30 31 32 |
# File 'lib/flat_file/qsv.rb', line 24 def self.() 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) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# 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 |