Module: XMLable::Mixins::Instantiable

Defined in:
lib/xmlable/mixins/instantiable.rb

Overview

Instantiable module contains the logic to initialize the new elements

Instance Method Summary collapse

Instance Method Details

#__initialize_with(value) ⇒ Object

Initialize object with given value

Parameters:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/xmlable/mixins/instantiable.rb', line 22

def __initialize_with(value)
  if value.is_a?(Hash)
    value.each do |key, val|
      if respond_to?(:__overwrite_content) && __content_methods.include?(key.to_s)
        next __overwrite_content(val)
      end

      h = key?(key)
      case h
      when Handlers::Attribute then __attribute_object_initialize(h, val)
      when Handlers::Root then __root_object_initialize(h, val)
      when Handlers::Element then __element_object_initialize(h, val)
      else raise h.inspect
      end
    end
  else
    case __handler
    when Handlers::Attribute then __overwrite_value(value)
    when Handlers::Element then __overwrite_content(value)
    else raise h.inspect
    end
  end
end

#initialize(items = nil, node = nil, handler = nil) ⇒ Object

Parameters:

  • items (Object) (defaults to: nil)

    initial params

  • node (Nokogiri::XML::Node) (defaults to: nil)
  • handler (XMLable::Handlers::Base) (defaults to: nil)


12
13
14
15
# File 'lib/xmlable/mixins/instantiable.rb', line 12

def initialize(items = nil, node = nil, handler = nil)
  super(node, handler)
  __initialize_with(items) if items
end