Module: XMLable::Mixins::RootStorage
- Defined in:
- lib/xmlable/mixins/root_storage.rb
Overview
RootStorage module contains the logic to manage with XML root element
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#[](key) ⇒ Object
Get root object by key.
-
#[]=(key, val) ⇒ Object
Set root object value.
-
#__empty? ⇒ Boolean
Is the current object empty?.
-
#__root_handler ⇒ XMLable::Handlers::Root, XMLable::Handlers::RootNone
Cureent root object’s handler.
-
#__root_object_initialize(h, value) ⇒ Object
Initialize root object with params.
-
#__set_root(node) ⇒ Object
Set XML root element.
-
#key?(key) ⇒ Boolean
Does this object has root object with given key?.
- #method_missing(name, *args, &block) ⇒ Object
-
#root ⇒ XMLable::Mixins::Object
Get root object.
-
#root! ⇒ Object
Get unwraped root object’s value.
-
#root=(val) ⇒ Object
Set root object content.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
Class Method Details
.included(base) ⇒ Object
7 8 9 |
# File 'lib/xmlable/mixins/root_storage.rb', line 7 def self.included(base) base.send(:extend, ClassMethods) end |
Instance Method Details
#[](key) ⇒ Object
Get root object by key
103 104 105 |
# File 'lib/xmlable/mixins/root_storage.rb', line 103 def [](key) root if key?(key) end |
#[]=(key, val) ⇒ Object
Set root object value
113 114 115 |
# File 'lib/xmlable/mixins/root_storage.rb', line 113 def []=(key, val) self.root = val if key?(key) end |
#__empty? ⇒ Boolean
Is the current object empty?
41 42 43 44 |
# File 'lib/xmlable/mixins/root_storage.rb', line 41 def __empty? return false unless super __empty(root) end |
#__root_handler ⇒ XMLable::Handlers::Root, XMLable::Handlers::RootNone
Cureent root object’s handler
122 123 124 |
# File 'lib/xmlable/mixins/root_storage.rb', line 122 def __root_handler self.class.__root_handler end |
#__root_object_initialize(h, value) ⇒ Object
Initialize root object with params
71 72 73 74 75 76 |
# File 'lib/xmlable/mixins/root_storage.rb', line 71 def __root_object_initialize(h, value) return self.root = value unless value.is_a?(Hash) value.each do |key, val| root[key].__initialize_with(val) end end |
#__set_root(node) ⇒ Object
Set XML root element
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/xmlable/mixins/root_storage.rb', line 16 def __set_root(node) unless node.is_a?(Nokogiri::XML::Element) node = Nokogiri::XML::Element.new(__root_handler.tag.to_s, @__node) @__node.root = node end node.instance_variable_set(:@__handler, __root_handler) @root = __root_handler.from_xml_element(node) if __root_handler.namespace_prefix node.namespace = node.namespace_scopes.find do |n| n.prefix == __root_handler.namespace_prefix end end end |
#key?(key) ⇒ Boolean
Does this object has root object with given key?
92 93 94 95 96 |
# File 'lib/xmlable/mixins/root_storage.rb', line 92 def key?(key) names = ['root', __root_handler.method_name] return __root_handler if names.include?(key.to_s) super end |
#root ⇒ XMLable::Mixins::Object
Get root object
51 52 53 54 |
# File 'lib/xmlable/mixins/root_storage.rb', line 51 def root __set_root(nil) unless instance_variable_defined?(:@root) @root end |
#root! ⇒ Object
Get unwraped root object’s value
61 62 63 |
# File 'lib/xmlable/mixins/root_storage.rb', line 61 def root! root.__object end |
#root=(val) ⇒ Object
Set root object content
83 84 85 |
# File 'lib/xmlable/mixins/root_storage.rb', line 83 def root=(val) @root.__overwrite_content(val) end |