Class: Dommy::Fragment
Constant Summary
Constants included
from Node
Node::ATTRIBUTE_NODE, Node::CDATA_SECTION_NODE, Node::COMMENT_NODE, Node::DOCUMENT_FRAGMENT_NODE, Node::DOCUMENT_NODE, Node::DOCUMENT_POSITION_CONTAINED_BY, Node::DOCUMENT_POSITION_CONTAINS, Node::DOCUMENT_POSITION_DISCONNECTED, Node::DOCUMENT_POSITION_FOLLOWING, Node::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, Node::DOCUMENT_POSITION_PRECEDING, Node::DOCUMENT_TYPE_NODE, Node::ELEMENT_NODE, Node::PROCESSING_INSTRUCTION_NODE, Node::TEXT_NODE
Instance Attribute Summary collapse
Instance Method Summary
collapse
#__deliver_event__, #add_event_listener, #dispatch_event, #invoke_listener, #remove_event_listener
Constructor Details
#initialize(document, nokogiri_node) ⇒ Fragment
Returns a new instance of Fragment.
14
15
16
17
|
# File 'lib/dommy/element.rb', line 14
def initialize(document, nokogiri_node)
@document = document
@__node__ = nokogiri_node
end
|
Instance Attribute Details
#__node__ ⇒ Object
Returns the value of attribute __node__.
12
13
14
|
# File 'lib/dommy/element.rb', line 12
def __node__
@__node__
end
|
#document ⇒ Object
Returns the value of attribute document.
12
13
14
|
# File 'lib/dommy/element.rb', line 12
def document
@document
end
|
Instance Method Details
#__js_call__(method, args) ⇒ Object
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/dommy/element.rb', line 101
def __js_call__(method, args)
case method
when "cloneNode"
deep = args.empty? ? false : !!args[0]
deep ? @document.wrap_node(Parser.fragment(@__node__.to_html, owner_doc: @document.nokogiri_doc)) : @document
.wrap_node(Parser.fragment("", owner_doc: @document.nokogiri_doc))
when "querySelector"
query_selector(args[0])
when "querySelectorAll"
query_selector_all(args[0])
when "getElementById"
get_element_by_id(args[0])
when "appendChild"
append_child(args[0])
else
nil
end
end
|
#__js_get__(key) ⇒ Object
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/dommy/element.rb', line 78
def __js_get__(key)
case key
when "nodeType"
11
when "children"
element_children
when "childNodes"
child_nodes
when "childElementCount"
child_element_count
when "firstChild"
first_child
when "lastChild"
last_child
when "firstElementChild"
first_element_child
when "lastElementChild"
last_element_child
when "textContent"
@__node__.text
end
end
|
#append_child(child) ⇒ Object
53
54
55
56
57
58
|
# File 'lib/dommy/element.rb', line 53
def append_child(child)
nodes = detach_dom_nodes(child)
nodes.each { |n| @__node__.add_child(n) }
@document.notify_child_list_mutation(target_node: @__node__, added_nodes: nodes, removed_nodes: [])
child
end
|
#child_element_count ⇒ Object
25
26
27
|
# File 'lib/dommy/element.rb', line 25
def child_element_count
@__node__.element_children.size
end
|
#child_nodes ⇒ Object
29
30
31
|
# File 'lib/dommy/element.rb', line 29
def child_nodes
NodeList.new(@__node__.children.map { |n| @document.wrap_node(n) }.compact)
end
|
#children ⇒ Object
Public Ruby API (DocumentFragment surface)
21
22
23
|
# File 'lib/dommy/element.rb', line 21
def children
element_children
end
|
120
121
122
123
124
|
# File 'lib/dommy/element.rb', line 120
def
nodes = @__node__.children.to_a
nodes.each(&:unlink)
nodes
end
|
#first_child ⇒ Object
33
34
35
|
# File 'lib/dommy/element.rb', line 33
def first_child
@document.wrap_node(@__node__.children.first)
end
|
#first_element_child ⇒ Object
41
42
43
|
# File 'lib/dommy/element.rb', line 41
def first_element_child
@document.wrap_node(@__node__.children.find(&:element?))
end
|
#get_element_by_id(id) ⇒ Object
72
73
74
75
76
|
# File 'lib/dommy/element.rb', line 72
def get_element_by_id(id)
return nil if id.nil?
@document.wrap_node(@__node__.at_css("##{id}"))
end
|
#last_child ⇒ Object
37
38
39
|
# File 'lib/dommy/element.rb', line 37
def last_child
@document.wrap_node(@__node__.children.last)
end
|
#last_element_child ⇒ Object
45
46
47
|
# File 'lib/dommy/element.rb', line 45
def last_element_child
@document.wrap_node(@__node__.element_children.last)
end
|
#query_selector(selector) ⇒ Object
60
61
62
63
64
|
# File 'lib/dommy/element.rb', line 60
def query_selector(selector)
return nil if selector.nil? || selector.to_s.empty?
@document.wrap_node(@__node__.at_css(selector.to_s))
end
|
#query_selector_all(selector) ⇒ Object
66
67
68
69
70
|
# File 'lib/dommy/element.rb', line 66
def query_selector_all(selector)
return NodeList.new if selector.nil? || selector.to_s.empty?
NodeList.new(@__node__.css(selector.to_s).map { |n| @document.wrap_node(n) }.compact)
end
|
#text_content ⇒ Object
49
50
51
|
# File 'lib/dommy/element.rb', line 49
def text_content
@__node__.text
end
|