Sha256: 1a7306b1b4aad0d5d78894effad85b7212d7772f56168cc6860c1d1e406bf964

Contents?: true

Size: 866 Bytes

Versions: 3

Compression:

Stored size: 866 Bytes

Contents

require 'xml/mapping/base'

class TimeNode < XML::Mapping::SingleAttributeNode
  def initialize_impl(path)
    @y_path = XML::XXPath.new(path+"/year")
    @m_path = XML::XXPath.new(path+"/month")
    @d_path = XML::XXPath.new(path+"/day")
  end

  def extract_attr_value(xml)
    y,m,d = default_when_xpath_err{ [@y_path.first(xml).text.to_i,
                                     @m_path.first(xml).text.to_i,
                                     @d_path.first(xml).text.to_i]
                                  }
    Time.local(y,m,d)
  end

  def set_attr_value(xml, value)
    raise "Not a Time: #{value}" unless Time===value
    @y_path.first(xml,:ensure_created=>true).text = value.year
    @m_path.first(xml,:ensure_created=>true).text = value.month
    @d_path.first(xml,:ensure_created=>true).text = value.day
  end
end


XML::Mapping.add_node_class TimeNode

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
pdf-labels-1.0.0 vendor/xml-mapping/examples/time_node.rb
xml-mapping-0.8.1 examples/time_node.rb
xml-mapping-0.8 examples/time_node.rb