Module: OM::XML::Document
- Included in:
- Samples::ModsArticle
- Defined in:
- lib/om/xml/document.rb
Defined Under Namespace
Modules: ClassMethods
Instance Attribute Summary collapse
-
#ox_namespaces ⇒ Object
Returns a hash combining the current documents namespaces (provided by nokogiri) and any namespaces that have been set up by your Terminology.
Class Method Summary collapse
Instance Method Summary collapse
-
#add_child_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a
node_type
template and add it as a child oftarget_node
, wheretarget_node
is one of: * a Nokogiri::XML::Node * a single-element Nokogiri::XML::NodeSet * aterm_pointer
array resolving to a single-element Nokogiri::XML::NodeSet Additional arguments will be passed to the template unaltered. -
#add_next_sibling_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a
node_type
template and insert it as the following sibling oftarget_node
. -
#add_previous_sibling_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a
node_type
template and insert it as the preceding sibling oftarget_node
. -
#after_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a
node_type
template and insert it as the following sibling oftarget_node
. -
#before_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a
node_type
template and insert it as the preceding sibling oftarget_node
. -
#find_by_terms(*term_pointer) ⇒ Object
term_pointer
Variable length array of values in format [:accessor_name, :accessor_name …] or [:accessor_name=>index, :accessor_name …] example: => 1, :first_name example: [:person, 1, :first_name] Currently, indexes must be integers. -
#find_by_terms_and_value(*term_pointer) ⇒ Object
Applies the property’s corresponding xpath query, returning the result Nokogiri::XML::NodeSet.
-
#replace_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a
node_type
template and replacetarget_node
with it. -
#swap_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a
node_type
template and replacetarget_node
with it. - #template(node_type, *args) ⇒ Object
-
#template_registry ⇒ Object
Access the class’s template registry.
Instance Attribute Details
#ox_namespaces ⇒ Object
Returns a hash combining the current documents namespaces (provided by nokogiri) and any namespaces that have been set up by your Terminology. Most importantly, this matches the ‘oxns’ namespace to the namespace you provided in your Terminology’s root term config
38 39 40 |
# File 'lib/om/xml/document.rb', line 38 def ox_namespaces @ox_namespaces end |
Class Method Details
.included(klass) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/om/xml/document.rb', line 40 def self.included(klass) klass.extend(ClassMethods) klass.send(:include, OM::XML::Container) klass.send(:include, OM::XML::TermValueOperators) end |
Instance Method Details
#add_child_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a node_type
template and add it as a child of target_node
, where target_node
is one of:
-
a Nokogiri::XML::Node
-
a single-element Nokogiri::XML::NodeSet
-
a
term_pointer
array resolving to a single-element Nokogiri::XML::NodeSet
Additional arguments will be passed to the template unaltered.
Returns the new Nokogiri::XML::Node.
87 88 89 |
# File 'lib/om/xml/document.rb', line 87 def add_child_node(target_node, node_type, *args, &block) manipulate_node(:add_child, target_node, node_type, *args, &block) end |
#add_next_sibling_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a node_type
template and insert it as the following sibling of target_node
. Returns the new Nokogiri::XML::Node.
93 94 95 |
# File 'lib/om/xml/document.rb', line 93 def add_next_sibling_node(target_node, node_type, *args, &block) manipulate_node(:add_next_sibling, target_node, node_type, *args, &block) end |
#add_previous_sibling_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a node_type
template and insert it as the preceding sibling of target_node
. Returns the new Nokogiri::XML::Node.
99 100 101 |
# File 'lib/om/xml/document.rb', line 99 def add_previous_sibling_node(target_node, node_type, *args, &block) manipulate_node(:add_previous_sibling, target_node, node_type, *args, &block) end |
#after_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a node_type
template and insert it as the following sibling of target_node
. Returns target_node
.
105 106 107 |
# File 'lib/om/xml/document.rb', line 105 def after_node(target_node, node_type, *args, &block) manipulate_node(:after, target_node, node_type, *args, &block) end |
#before_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a node_type
template and insert it as the preceding sibling of target_node
. Returns target_node
.
111 112 113 |
# File 'lib/om/xml/document.rb', line 111 def before_node(target_node, node_type, *args, &block) manipulate_node(:before, target_node, node_type, *args, &block) end |
#find_by_terms(*term_pointer) ⇒ Object
term_pointer
Variable length array of values in format [:accessor_name, :accessor_name …] or [:accessor_name=>index, :accessor_name …] example: => 1, :first_name example: [:person, 1, :first_name] Currently, indexes must be integers.
62 63 64 65 66 67 68 69 |
# File 'lib/om/xml/document.rb', line 62 def find_by_terms(*term_pointer) xpath = self.class.terminology.xpath_with_indexes(*term_pointer) if xpath.nil? return nil else return ng_xml.xpath(xpath, ox_namespaces) end end |
#find_by_terms_and_value(*term_pointer) ⇒ Object
Applies the property’s corresponding xpath query, returning the result Nokogiri::XML::NodeSet
48 49 50 51 52 53 54 55 |
# File 'lib/om/xml/document.rb', line 48 def find_by_terms_and_value(*term_pointer) xpath = self.class.terminology.xpath_for(*term_pointer) if xpath.nil? return nil else return ng_xml.xpath(xpath, ox_namespaces) end end |
#replace_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a node_type
template and replace target_node
with it. Returns the new Nokogiri::XML::Node.
117 118 119 |
# File 'lib/om/xml/document.rb', line 117 def replace_node(target_node, node_type, *args, &block) manipulate_node(:replace, target_node, node_type, *args, &block) end |
#swap_node(target_node, node_type, *args, &block) ⇒ Object
Instantiate a node_type
template and replace target_node
with it. Returns target_node
.
123 124 125 |
# File 'lib/om/xml/document.rb', line 123 def swap_node(target_node, node_type, *args, &block) manipulate_node(:swap, target_node, node_type, *args, &block) end |
#template(node_type, *args) ⇒ Object
76 77 78 |
# File 'lib/om/xml/document.rb', line 76 def template(node_type, *args) template_registry.instantiate(node_type, *args) end |
#template_registry ⇒ Object
Access the class’s template registry
72 73 74 |
# File 'lib/om/xml/document.rb', line 72 def template_registry self.class.template_registry end |