Class: REXML::CSSSelector::Adapters::REXMLAdapter
- Inherits:
-
BaseAdapter
- Object
- BaseAdapter
- REXML::CSSSelector::Adapters::REXMLAdapter
show all
- Defined in:
- lib/rexml/css_selector/adapters/rexml_adapter.rb
Overview
REXMLAdapter is an adapter implementation for REXML.
Constant Summary
collapse
- INSTANCE =
INSTANCE is the default instance.
new
Instance Method Summary
collapse
Methods inherited from BaseAdapter
#checked?, #disabled?, #get_children_elements, #get_class_names, #get_element_index, #get_id, #root?
Instance Method Details
#each_child_element(element) ⇒ Object
64
65
66
|
# File 'lib/rexml/css_selector/adapters/rexml_adapter.rb', line 64
def each_child_element(element, &)
element.each_child { yield _1 if element?(_1) }
end
|
#each_recursive_element(element) ⇒ Object
68
69
70
|
# File 'lib/rexml/css_selector/adapters/rexml_adapter.rb', line 68
def each_recursive_element(element, &)
element.each_recursive(&)
end
|
#element?(node) ⇒ Boolean
8
9
10
|
# File 'lib/rexml/css_selector/adapters/rexml_adapter.rb', line 8
def element?(node)
node.instance_of?(::REXML::Element)
end
|
#empty?(node) ⇒ Boolean
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/rexml/css_selector/adapters/rexml_adapter.rb', line 12
def empty?(node)
node.children.all? do |child|
case child
when ::REXML::Element
false
when ::REXML::Text
child.to_s.match?(/\A\s*\z/)
else
true
end
end
end
|
#get_attribute(element, name, namespace = nil, attribute_name_case = :sensitive) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/rexml/css_selector/adapters/rexml_adapter.rb', line 33
def get_attribute(element, name, namespace = nil, attribute_name_case = :sensitive)
namespace = element.namespace(namespace) if namespace
case attribute_name_case
in :sensitive
element.attribute(name, namespace)&.value
in :insensitive
name = name.downcase(:ascii)
target_attr = nil
element.attributes.each_attribute do |attr|
if attr.name.downcase(:ascii) == name && (!namespace || attr.namespace == namespace)
target_attr = attr
break
end
end
target_attr&.value
end
end
|
#get_document_node(node) ⇒ Object
52
53
54
|
# File 'lib/rexml/css_selector/adapters/rexml_adapter.rb', line 52
def get_document_node(node)
node.root_node
end
|
#get_namespace(element) ⇒ Object
29
30
31
|
# File 'lib/rexml/css_selector/adapters/rexml_adapter.rb', line 29
def get_namespace(element)
element.prefix
end
|
#get_parent_node(element) ⇒ Object
56
57
58
|
# File 'lib/rexml/css_selector/adapters/rexml_adapter.rb', line 56
def get_parent_node(element)
element.parent
end
|
#get_previous_sibling_element(element) ⇒ Object
60
61
62
|
# File 'lib/rexml/css_selector/adapters/rexml_adapter.rb', line 60
def get_previous_sibling_element(element)
element.previous_element
end
|
#get_tag_name(element) ⇒ Object
25
26
27
|
# File 'lib/rexml/css_selector/adapters/rexml_adapter.rb', line 25
def get_tag_name(element)
element.name
end
|