Class: ONIX::Serializer::Default::Date

Inherits:
Object
  • Object
show all
Defined in:
lib/onix/serializer.rb

Class Method Summary collapse

Class Method Details

.serialize(xml, date, parent_tag = nil, level = 0) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# 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.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