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