Class: Moxml::Adapter::CustomizedLibxml::Node
- Inherits:
-
Object
- Object
- Moxml::Adapter::CustomizedLibxml::Node
- Defined in:
- lib/moxml/adapter/customized_libxml/node.rb
Overview
Base wrapper class for LibXML nodes
This wrapper hides LibXML's strict document ownership model, allowing nodes to be moved between documents transparently. Similar pattern to Ox adapter's customized classes.
The Libxml adapter owns wrapper type mapping in one place so the wrapper classes do not duplicate node-type knowledge.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#native ⇒ Object
readonly
Returns the value of attribute native.
Instance Method Summary collapse
-
#==(other) ⇒ Object
(also: #eql?)
Compare wrappers based on their native nodes.
-
#document ⇒ Object
Get the document this node belongs to.
-
#document_present? ⇒ Boolean
Check if node has a document.
- #hash ⇒ Object
-
#initialize(native_node) ⇒ Node
constructor
A new instance of Node.
-
#replace_native!(fresh) ⇒ Object
Swap the wrapped native node.
Constructor Details
#initialize(native_node) ⇒ Node
Returns a new instance of Node.
17 18 19 |
# File 'lib/moxml/adapter/customized_libxml/node.rb', line 17 def initialize(native_node) @native = native_node end |
Instance Attribute Details
#native ⇒ Object (readonly)
Returns the value of attribute native.
15 16 17 |
# File 'lib/moxml/adapter/customized_libxml/node.rb', line 15 def native @native end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql?
Compare wrappers based on their native nodes
30 31 32 33 34 35 |
# File 'lib/moxml/adapter/customized_libxml/node.rb', line 30 def ==(other) return false unless other other_native = other.is_a?(self.class) ? other.native : other @native == other_native end |
#document ⇒ Object
Get the document this node belongs to
49 50 51 |
# File 'lib/moxml/adapter/customized_libxml/node.rb', line 49 def document @native.doc if document_present? end |
#document_present? ⇒ Boolean
Check if node has a document
44 45 46 |
# File 'lib/moxml/adapter/customized_libxml/node.rb', line 44 def document_present? @native.is_a?(::LibXML::XML::Node) && !@native.doc.nil? end |
#hash ⇒ Object
39 40 41 |
# File 'lib/moxml/adapter/customized_libxml/node.rb', line 39 def hash @native.hash end |
#replace_native!(fresh) ⇒ Object
Swap the wrapped native node. Used by the Libxml adapter when libxml-ruby's content= setter would silently re-escape stored text; replacing the node with a fresh raw-storage instance is the only way to preserve verbatim content.
25 26 27 |
# File 'lib/moxml/adapter/customized_libxml/node.rb', line 25 def replace_native!(fresh) @native = fresh end |