Class: Moxml::Element
- Inherits:
-
Node
- Object
- Node
- Moxml::Element
show all
- Defined in:
- lib/moxml/element.rb
Constant Summary
Constants inherited
from Node
Node::TYPES
Instance Attribute Summary
Attributes inherited from Node
#context, #native
Instance Method Summary
collapse
Methods inherited from Node
#==, #add_child, #add_next_sibling, #add_previous_sibling, #at_xpath, #children, #clone, #document, #each_node, #find, #first_child, #has_children?, #initialize, #last_child, #next_sibling, #parent, #previous_sibling, #remove, #replace, #to_xml, wrap, #xpath
Methods included from XmlUtils
#encode_entities, #normalize_xml_value, #validate_comment_content, #validate_declaration_encoding, #validate_declaration_standalone, #validate_declaration_version, #validate_element_name, #validate_pi_target, #validate_prefix, #validate_uri
Constructor Details
This class inherits a constructor from Moxml::Node
Instance Method Details
#[](name) ⇒ Object
47
48
49
|
# File 'lib/moxml/element.rb', line 47
def [](name)
adapter.get_attribute_value(@native, name)
end
|
#[]=(name, value) ⇒ Object
43
44
45
|
# File 'lib/moxml/element.rb', line 43
def []=(name, value)
adapter.set_attribute(@native, name, normalize_xml_value(value))
end
|
#add_namespace(prefix, uri) ⇒ Object
Also known as:
add_namespace_definition
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/moxml/element.rb', line 77
def add_namespace(prefix, uri)
validate_uri(uri)
adapter.create_native_namespace(@native, prefix, uri)
self
rescue ValidationError => e
raise Moxml::NamespaceError.new(
e.message,
prefix: prefix,
uri: uri,
element: self,
)
end
|
#attribute(name) ⇒ Object
51
52
53
54
|
# File 'lib/moxml/element.rb', line 51
def attribute(name)
native_attr = adapter.get_attribute(@native, name)
native_attr && Attribute.new(native_attr, context)
end
|
#attributes ⇒ Object
66
67
68
69
70
|
# File 'lib/moxml/element.rb', line 66
def attributes
adapter.attributes(@native).map do |attr|
Attribute.new(attr, context)
end
end
|
#expanded_name ⇒ Object
Returns the expanded name including namespace prefix
23
24
25
26
27
28
29
|
# File 'lib/moxml/element.rb', line 23
def expanded_name
if namespace_prefix && !namespace_prefix.empty?
"#{namespace_prefix}:#{name}"
else
name
end
end
|
#find_all(xpath) ⇒ Object
178
179
180
|
# File 'lib/moxml/element.rb', line 178
def find_all(xpath)
xpath(xpath).to_a
end
|
#find_element(xpath) ⇒ Object
174
175
176
|
# File 'lib/moxml/element.rb', line 174
def find_element(xpath)
at_xpath(xpath)
end
|
#get(attr_name) ⇒ Object
Alias for getting attribute value (used by XPath engine)
57
58
59
|
# File 'lib/moxml/element.rb', line 57
def get(attr_name)
attribute(attr_name)
end
|
#identifier ⇒ String
Returns the primary identifier for this element (its tag name)
18
19
20
|
# File 'lib/moxml/element.rb', line 18
def identifier
name
end
|
#inner_text ⇒ Object
132
133
134
|
# File 'lib/moxml/element.rb', line 132
def inner_text
adapter.inner_text(@native)
end
|
#inner_xml ⇒ Object
136
137
138
|
# File 'lib/moxml/element.rb', line 136
def inner_xml
adapter.inner_xml(@native)
end
|
#inner_xml=(xml) ⇒ Object
140
141
142
143
|
# File 'lib/moxml/element.rb', line 140
def inner_xml=(xml)
doc = context.parse("<root>#{xml}</root>")
adapter.replace_children(@native, doc.root.children.map(&:native))
end
|
#name ⇒ Object
8
9
10
|
# File 'lib/moxml/element.rb', line 8
def name
adapter.node_name(@native)
end
|
#name=(value) ⇒ Object
12
13
14
|
# File 'lib/moxml/element.rb', line 12
def name=(value)
adapter.set_node_name(@native, value)
end
|
#namespace ⇒ Object
it’s NOT the same as namespaces.first
94
95
96
97
|
# File 'lib/moxml/element.rb', line 94
def namespace
ns = adapter.namespace(@native)
ns && Namespace.new(ns, context)
end
|
#namespace=(ns_or_hash) ⇒ Object
add the prefix to the element name and add the namespace to the list of namespace definitions
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/moxml/element.rb', line 101
def namespace=(ns_or_hash)
if ns_or_hash.is_a?(Hash)
adapter.set_namespace(
@native,
adapter.create_namespace(@native, *ns_or_hash.to_a.first),
)
else
adapter.set_namespace(@native, ns_or_hash&.native)
end
end
|
#namespace_name ⇒ Object
Returns the namespace URI of this element (alias for namespace_uri)
120
121
122
|
# File 'lib/moxml/element.rb', line 120
def namespace_name
namespace_uri
end
|
#namespace_prefix ⇒ Object
Returns the namespace prefix of this element
32
33
34
35
|
# File 'lib/moxml/element.rb', line 32
def namespace_prefix
ns = namespace
ns&.prefix
end
|
#namespace_uri ⇒ Object
Returns the namespace URI of this element
38
39
40
41
|
# File 'lib/moxml/element.rb', line 38
def namespace_uri
ns = namespace
ns&.uri
end
|
#namespaces ⇒ Object
Also known as:
namespace_definitions
112
113
114
115
116
|
# File 'lib/moxml/element.rb', line 112
def namespaces
adapter.namespace_definitions(@native).map do |ns|
Namespace.new(ns, context)
end
end
|
#nodes ⇒ Object
Alias for children (used by XPath engine)
183
184
185
|
# File 'lib/moxml/element.rb', line 183
def nodes
children
end
|
#remove_attribute(name) ⇒ Object
72
73
74
75
|
# File 'lib/moxml/element.rb', line 72
def remove_attribute(name)
adapter.remove_attribute(@native, name)
self
end
|
#set_attributes(attributes_hash) ⇒ Object
162
163
164
165
|
# File 'lib/moxml/element.rb', line 162
def set_attributes(attributes_hash)
attributes_hash.each { |name, value| self[name] = value }
self
end
|
#text ⇒ Object
124
125
126
|
# File 'lib/moxml/element.rb', line 124
def text
adapter.text_content(@native)
end
|
#text=(content) ⇒ Object
128
129
130
|
# File 'lib/moxml/element.rb', line 128
def text=(content)
adapter.set_text_content(@native, normalize_xml_value(content))
end
|
#with_attribute(name, value) ⇒ Object
146
147
148
149
|
# File 'lib/moxml/element.rb', line 146
def with_attribute(name, value)
self[name] = value
self
end
|
#with_child(child) ⇒ Object
168
169
170
171
|
# File 'lib/moxml/element.rb', line 168
def with_child(child)
add_child(child)
self
end
|
#with_namespace(prefix, uri) ⇒ Object
151
152
153
154
|
# File 'lib/moxml/element.rb', line 151
def with_namespace(prefix, uri)
add_namespace(prefix, uri)
self
end
|
#with_text(content) ⇒ Object
156
157
158
159
|
# File 'lib/moxml/element.rb', line 156
def with_text(content)
self.text = content
self
end
|