Sha256: 9810c9cebfd3a60dd39d67e8d1ca9cb05e0a1e159c3e937b14cd72ea383b6454

Contents?: true

Size: 737 Bytes

Versions: 1

Compression:

Stored size: 737 Bytes

Contents

require 'to_xml/version'

class Object
  def self.xml_type
    name.gsub(/([a-z])([A-Z])/,'\1-\2').downcase
  end
  def xml_type
    self.class.xml_type
  end
  def to_xml( name = nil )
    name ? %{<#{name} type="#{xml_type}">#{self.to_s}</#{name}>} : self.to_s
  end
  def to_xml!( *args )
    %{<?xml version="1.0" encoding="UTF-8"?>\n} + to_xml( *args )
  end
end

class Integer
  def self.xml_type
    "integer"
  end
end

class Array
  def to_xml( array_name = :array, item_name = :item )
    %|<#{array_name} size="#{self.size}">|+map{|n|n.to_xml( :item )}.join+"</#{array_name}>"
  end
end

class Hash
  def to_xml( name = nil )
    data = to_a.map{|k,v|v.to_xml(k)}.join
    name ? "<#{name}>#{data}</#{name}>" : data
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
to_xml-0.1.1 lib/to_xml.rb