Class: Object

Inherits:
BasicObject
Defined in:
lib/rapuncel/core_ext/object.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_xml_rpc(xml_node) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/rapuncel/core_ext/object.rb', line 12

def self.from_xml_rpc xml_node
  if xml_node.is_a? String
    xml_node = Nokogiri::XML.parse(xml_node).root
  end

  return nil if xml_node.nil?

  case xml_node.name
  when 'i4', 'int'
    Integer.from_xml_rpc xml_node
  when 'array'
    Array.from_xml_rpc xml_node
  when 'struct'
    Hash.from_xml_rpc xml_node
  when 'double'
    Float.from_xml_rpc xml_node
  when 'boolean'
    Rapuncel::Boolean.from_xml_rpc xml_node
  when 'string'
    String.from_xml_rpc xml_node
  when 'dateTime.iso8601'
    Time.from_xml_rpc xml_node
  when 'base64'
    raise 'Now its time to implement Base64'
  else
    raise "What is this? I didn't know #{xml_node.name} was part of the XMLRPC specification? Anyway, the value was: #{xml_node.text.strip}"
  end
end

Instance Method Details

#to_xml_rpc(b = Rapuncel.get_builder) ⇒ Object



2
3
4
5
6
7
8
9
10
# File 'lib/rapuncel/core_ext/object.rb', line 2

def to_xml_rpc b = Rapuncel.get_builder
  if respond_to?(:acts_like?) && acts_like?(:time)
    to_time.to_xml_rpc b
  else
    _collect_ivars_in_hash.to_xml_rpc b
  end

  b.to_xml
end