class ONIX::Serializer::Default::Date

Public Class Methods

serialize(xml, date, parent_tag = nil, level = 0) click to toggle source
# File lib/onix/serializer.rb, line 109
def self.serialize(xml, date, parent_tag = nil, level = 0)
  deprecated_date_format = date.deprecated_date_format
  date_format = date.date_format || DateFormat.from_code("00")
  code_format = date.format_from_code(date_format.code)

  xml.send(parent_tag, nil) {
    date.class.ancestors_registered_elements.each do |tag, element|
      next if element.short
      val = date.instance_variable_get(element.to_instance)
      if val
        case tag
        when "DateFormat"
          if deprecated_date_format
            xml.DateFormat(date_format.code)
          end
        when "Date"
          if deprecated_date_format
            xml.Date(date.date.strftime(code_format))
          else
            attrs = date.date_format ? { :dateformat => date_format.code } : {}
            xml.Date(date.date.strftime(code_format), attrs)
          end
        else
          ONIX::Serializer::Traverser.any_serialize(element.type, Default, xml, element.serialize_lambda(val), tag, level)
        end
      end
    end
  }
end