class Omnikassa2::CSVSerializer

Public Class Methods

new(config) click to toggle source
# File lib/omnikassa2/helpers/csv_serializer.rb, line 3
def initialize(config)
  @config = config
end

Public Instance Methods

serialize(object) click to toggle source
# File lib/omnikassa2/helpers/csv_serializer.rb, line 7
def serialize(object)
  objects = object.kind_of?(Array) ? object : [object]
  parts = []
  objects.each do |object|
    parts << extract_fields(object).join(',')
  end
  parts.join(',')
end

Private Instance Methods

extract_field(object, config_hash) click to toggle source
# File lib/omnikassa2/helpers/csv_serializer.rb, line 27
def extract_field(object, config_hash)
  field = config_hash.fetch(:field)
  include_if_nil = config_hash.fetch(:include_if_nil, false)
  nested_fields = config_hash.fetch(:nested_fields, nil)

  value = extract_value object, field
  if(value.kind_of?(Time))
    value = value.iso8601(3)
  end

  if value.nil?
    include_if_nil ? '' : nil
  elsif nested_fields.nil?
    value
  else
    CSVSerializer.new(nested_fields).serialize(value)
  end
end
extract_fields(object) click to toggle source
# File lib/omnikassa2/helpers/csv_serializer.rb, line 18
def extract_fields(object)
  parts = []
  @config.each do |config_hash|
    value = extract_field(object, config_hash)
    parts << value unless value.nil?
  end
  parts
end
extract_value(object, field) click to toggle source
# File lib/omnikassa2/helpers/csv_serializer.rb, line 46
def extract_value(object, field)
  if(object.kind_of?(Hash))
    object.fetch(field, nil)
  else
    object.respond_to?(field) ? object.public_send(field) : nil
  end
end