hatemile 2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CODE_OF_CONDUCT.md +46 -0
- data/Gemfile +9 -0
- data/LICENSE +202 -0
- data/Rakefile +64 -0
- data/hatemile.gemspec +37 -0
- data/lib/hatemile/accessible_association.rb +62 -0
- data/lib/hatemile/accessible_css.rb +43 -0
- data/lib/hatemile/accessible_display.rb +178 -0
- data/lib/hatemile/accessible_event.rb +95 -0
- data/lib/hatemile/accessible_form.rb +101 -0
- data/lib/hatemile/accessible_navigation.rb +82 -0
- data/lib/hatemile/helper.rb +58 -0
- data/lib/hatemile/implementation/accessible_association_implementation.rb +346 -0
- data/lib/hatemile/implementation/accessible_css_implementation.rb +772 -0
- data/lib/hatemile/implementation/accessible_display_implementation.rb +1362 -0
- data/lib/hatemile/implementation/accessible_event_implementation.rb +278 -0
- data/lib/hatemile/implementation/accessible_form_implementation.rb +386 -0
- data/lib/hatemile/implementation/accessible_navigation_implementation.rb +561 -0
- data/lib/hatemile/util/common_functions.rb +106 -0
- data/lib/hatemile/util/configure.rb +92 -0
- data/lib/hatemile/util/css/rcp/rcp_declaration.rb +77 -0
- data/lib/hatemile/util/css/rcp/rcp_parser.rb +115 -0
- data/lib/hatemile/util/css/rcp/rcp_rule.rb +86 -0
- data/lib/hatemile/util/css/style_sheet_declaration.rb +59 -0
- data/lib/hatemile/util/css/style_sheet_parser.rb +43 -0
- data/lib/hatemile/util/css/style_sheet_rule.rb +73 -0
- data/lib/hatemile/util/html/html_dom_element.rb +234 -0
- data/lib/hatemile/util/html/html_dom_node.rb +131 -0
- data/lib/hatemile/util/html/html_dom_parser.rb +150 -0
- data/lib/hatemile/util/html/html_dom_text_node.rb +43 -0
- data/lib/hatemile/util/html/nokogiri/nokogiri_html_dom_element.rb +302 -0
- data/lib/hatemile/util/html/nokogiri/nokogiri_html_dom_node.rb +112 -0
- data/lib/hatemile/util/html/nokogiri/nokogiri_html_dom_parser.rb +208 -0
- data/lib/hatemile/util/html/nokogiri/nokogiri_html_dom_text_node.rb +83 -0
- data/lib/hatemile/util/id_generator.rb +53 -0
- data/lib/js/common.js +98 -0
- data/lib/js/eventlistener.js +36 -0
- data/lib/js/include.js +292 -0
- data/lib/js/scriptlist_validation_fields.js +13 -0
- data/lib/js/validation.js +205 -0
- data/lib/locale/en-US.yml +388 -0
- data/lib/locale/pt-BR.yml +389 -0
- data/lib/skippers.xml +6 -0
- data/lib/symbols.xml +40 -0
- data/test/locale/en-US.yml +5 -0
- data/test/locale/pt-BR.yml +4 -0
- data/test/test_accessible_association_implementation.rb +258 -0
- data/test/test_accessible_css_implementation.rb +518 -0
- data/test/test_accessible_display_implementation.rb +873 -0
- data/test/test_accessible_form_implementation.rb +283 -0
- data/test/test_accessible_navigation_implementation.rb +228 -0
- data/test/test_common_functions.rb +128 -0
- data/test/test_configure.rb +73 -0
- data/test/test_nokogiri_html_dom_element.rb +586 -0
- data/test/test_nokogiri_html_dom_parser.rb +363 -0
- data/test/test_nokogiri_html_dom_text_node.rb +225 -0
- data/test/test_rcp_declaration.rb +103 -0
- data/test/test_rcp_parser.rb +86 -0
- data/test/test_rcp_rule.rb +89 -0
- metadata +199 -0
@@ -0,0 +1,150 @@
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
2
|
+
# you may not use this file except in compliance with the License.
|
3
|
+
# You may obtain a copy of the License at
|
4
|
+
#
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
#
|
7
|
+
# Unless required by applicable law or agreed to in writing, software
|
8
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
9
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
10
|
+
# See the License for the specific language governing permissions and
|
11
|
+
# limitations under the License.
|
12
|
+
|
13
|
+
##
|
14
|
+
# The Hatemile module contains the interfaces with the acessibility solutions.
|
15
|
+
module Hatemile
|
16
|
+
##
|
17
|
+
# The Hatemile::Util module contains the utilities of library.
|
18
|
+
module Util
|
19
|
+
##
|
20
|
+
# The Hatemile::Util::Html module contains the interfaces of HTML handles.
|
21
|
+
module Html
|
22
|
+
##
|
23
|
+
# The HTMLDOMParser interface contains the methods for access a native
|
24
|
+
# parser.
|
25
|
+
#
|
26
|
+
# @abstract
|
27
|
+
class HTMLDOMParser
|
28
|
+
private_class_method :new
|
29
|
+
|
30
|
+
##
|
31
|
+
# Find all elements in the parser by selector.
|
32
|
+
#
|
33
|
+
# @abstract
|
34
|
+
# @param selector [String, Hatemile::Util::Html::HTMLDOMElement] The
|
35
|
+
# selector.
|
36
|
+
# @return [Hatemile::Util::Html::HTMLDOMParser] The parser with the
|
37
|
+
# elements found.
|
38
|
+
def find(selector)
|
39
|
+
# Interface method
|
40
|
+
end
|
41
|
+
|
42
|
+
##
|
43
|
+
# Find all elements in the parser by selector, children of found
|
44
|
+
# elements.
|
45
|
+
#
|
46
|
+
# @abstract
|
47
|
+
# @param selector [String, Hatemile::Util::Html::HTMLDOMElement] The
|
48
|
+
# selector.
|
49
|
+
# @return [Hatemile::Util::Html::HTMLDOMParser] The parser with the
|
50
|
+
# elements found.
|
51
|
+
def find_children(selector)
|
52
|
+
# Interface method
|
53
|
+
end
|
54
|
+
|
55
|
+
##
|
56
|
+
# Find all elements in the parser by selector, descendants of found
|
57
|
+
# elements.
|
58
|
+
#
|
59
|
+
# @abstract
|
60
|
+
# @param selector [String, Hatemile::Util::Html::HTMLDOMElement] The
|
61
|
+
# selector.
|
62
|
+
# @return [Hatemile::Util::Html::HTMLDOMParser] The parser with the
|
63
|
+
# elements found.
|
64
|
+
def find_descendants(selector)
|
65
|
+
# Interface method
|
66
|
+
end
|
67
|
+
|
68
|
+
##
|
69
|
+
# Find all elements in the parser by selector, ancestors of found
|
70
|
+
# elements.
|
71
|
+
#
|
72
|
+
# @abstract
|
73
|
+
# @param selector [String, Hatemile::Util::Html::HTMLDOMElement] The
|
74
|
+
# selector.
|
75
|
+
# @return [Hatemile::Util::Html::HTMLDOMParser] The parser with the
|
76
|
+
# elements found.
|
77
|
+
def find_ancestors(selector)
|
78
|
+
# Interface method
|
79
|
+
end
|
80
|
+
|
81
|
+
##
|
82
|
+
# Returns the first element found.
|
83
|
+
#
|
84
|
+
# @abstract
|
85
|
+
# @return [Hatemile::Util::Html::HTMLDOMElement] The first element found
|
86
|
+
# or null if not have elements found.
|
87
|
+
def first_result
|
88
|
+
# Interface method
|
89
|
+
end
|
90
|
+
|
91
|
+
##
|
92
|
+
# Returns the last element found.
|
93
|
+
#
|
94
|
+
# @abstract
|
95
|
+
# @return [Hatemile::Util::Html::HTMLDOMElement] The last element found
|
96
|
+
# or null if not have elements found.
|
97
|
+
def last_result
|
98
|
+
# Interface method
|
99
|
+
end
|
100
|
+
|
101
|
+
##
|
102
|
+
# Returns a list with all elements found.
|
103
|
+
#
|
104
|
+
# @abstract
|
105
|
+
# @return [Array<Hatemile::Util::Html::HTMLDOMElement>] The list with
|
106
|
+
# all elements found.
|
107
|
+
def list_results
|
108
|
+
# Interface method
|
109
|
+
end
|
110
|
+
|
111
|
+
##
|
112
|
+
# Create a element.
|
113
|
+
#
|
114
|
+
# @abstract
|
115
|
+
# @param tag [String] The tag of element.
|
116
|
+
# @return [Hatemile::Util::Html::HTMLDOMElement] The element created.
|
117
|
+
def create_element(tag)
|
118
|
+
# Interface method
|
119
|
+
end
|
120
|
+
|
121
|
+
##
|
122
|
+
# Returns the HTML code of parser.
|
123
|
+
#
|
124
|
+
# @abstract
|
125
|
+
# @return [String] The HTML code of parser.
|
126
|
+
def get_html
|
127
|
+
# Interface method
|
128
|
+
end
|
129
|
+
|
130
|
+
##
|
131
|
+
# Returns the parser.
|
132
|
+
#
|
133
|
+
# @abstract
|
134
|
+
# @return [Object] The parser or root element of the parser.
|
135
|
+
def get_parser
|
136
|
+
# Interface method
|
137
|
+
end
|
138
|
+
|
139
|
+
##
|
140
|
+
# Clear the memory of this object.
|
141
|
+
#
|
142
|
+
# @abstract
|
143
|
+
# @return [void]
|
144
|
+
def clear_parser
|
145
|
+
# Interface method
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
2
|
+
# you may not use this file except in compliance with the License.
|
3
|
+
# You may obtain a copy of the License at
|
4
|
+
#
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
#
|
7
|
+
# Unless required by applicable law or agreed to in writing, software
|
8
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
9
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
10
|
+
# See the License for the specific language governing permissions and
|
11
|
+
# limitations under the License.
|
12
|
+
|
13
|
+
require File.join(File.dirname(__FILE__), 'html_dom_node')
|
14
|
+
|
15
|
+
##
|
16
|
+
# The Hatemile module contains the interfaces with the acessibility solutions.
|
17
|
+
module Hatemile
|
18
|
+
##
|
19
|
+
# The Hatemile::Util module contains the utilities of library.
|
20
|
+
module Util
|
21
|
+
##
|
22
|
+
# The Hatemile::Util::Html module contains the interfaces of HTML handles.
|
23
|
+
module Html
|
24
|
+
##
|
25
|
+
# The HTMLDOMTextNode interface contains the methods for access of the
|
26
|
+
# HTML TextNode.
|
27
|
+
#
|
28
|
+
# @abstract
|
29
|
+
class HTMLDOMTextNode < HTMLDOMNode
|
30
|
+
private_class_method :new
|
31
|
+
|
32
|
+
##
|
33
|
+
# Change the text content of text node.
|
34
|
+
#
|
35
|
+
# @abstract
|
36
|
+
# @param text [String] The new text content.
|
37
|
+
def set_text_content(text)
|
38
|
+
# Interface method
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,302 @@
|
|
1
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
2
|
+
# you may not use this file except in compliance with the License.
|
3
|
+
# You may obtain a copy of the License at
|
4
|
+
#
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
#
|
7
|
+
# Unless required by applicable law or agreed to in writing, software
|
8
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
9
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
10
|
+
# See the License for the specific language governing permissions and
|
11
|
+
# limitations under the License.
|
12
|
+
|
13
|
+
require File.join(
|
14
|
+
File.dirname(File.dirname(File.dirname(File.dirname(__FILE__)))),
|
15
|
+
'helper'
|
16
|
+
)
|
17
|
+
require File.join(File.dirname(File.dirname(__FILE__)), 'html_dom_element')
|
18
|
+
require File.join(File.dirname(__FILE__), 'nokogiri_html_dom_node')
|
19
|
+
require File.join(File.dirname(__FILE__), 'nokogiri_html_dom_text_node')
|
20
|
+
|
21
|
+
##
|
22
|
+
# The Hatemile module contains the interfaces with the acessibility solutions.
|
23
|
+
module Hatemile
|
24
|
+
##
|
25
|
+
# The Hatemile::Util module contains the utilities of library.
|
26
|
+
module Util
|
27
|
+
##
|
28
|
+
# The Hatemile::Util::Html module contains the interfaces of HTML handles.
|
29
|
+
module Html
|
30
|
+
##
|
31
|
+
# The Hatemile::Util::NokogiriLib module contains the implementation of
|
32
|
+
# HTML handles for Nokogiri library.
|
33
|
+
module NokogiriLib
|
34
|
+
##
|
35
|
+
# The NokogiriHTMLDOMElement class is official implementation of
|
36
|
+
# HTMLDOMElement interface for the Nokogiri library.
|
37
|
+
class NokogiriHTMLDOMElement < Hatemile::Util::Html::HTMLDOMElement
|
38
|
+
include NokogiriHTMLDOMNode
|
39
|
+
|
40
|
+
public_class_method :new
|
41
|
+
|
42
|
+
##
|
43
|
+
# Tags that are self closing.
|
44
|
+
SELF_CLOSING_TAGS = %w[
|
45
|
+
area base br col embed hr img input keygen
|
46
|
+
link menuitem meta param source track wbr
|
47
|
+
].freeze
|
48
|
+
|
49
|
+
##
|
50
|
+
# Initializes a new object that encapsulate the Nokogiri element.
|
51
|
+
#
|
52
|
+
# @param element [Nokogiri::XML::Node] The Nokogiri element.
|
53
|
+
def initialize(element)
|
54
|
+
Hatemile::Helper.require_not_nil(element)
|
55
|
+
Hatemile::Helper.require_valid_type(element, Nokogiri::XML::Node)
|
56
|
+
|
57
|
+
@data = element
|
58
|
+
init(element, self)
|
59
|
+
end
|
60
|
+
|
61
|
+
##
|
62
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#get_tag_name
|
63
|
+
def get_tag_name
|
64
|
+
@data.name.upcase
|
65
|
+
end
|
66
|
+
|
67
|
+
##
|
68
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#get_attribute
|
69
|
+
def get_attribute(name)
|
70
|
+
@data.get_attribute(name)
|
71
|
+
end
|
72
|
+
|
73
|
+
##
|
74
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#set_attribute
|
75
|
+
def set_attribute(name, value)
|
76
|
+
@data.set_attribute(name, value)
|
77
|
+
end
|
78
|
+
|
79
|
+
##
|
80
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#remove_attribute
|
81
|
+
def remove_attribute(name)
|
82
|
+
@data.remove_attribute(name) if has_attribute?(name)
|
83
|
+
end
|
84
|
+
|
85
|
+
##
|
86
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#has_attribute?
|
87
|
+
def has_attribute?(name)
|
88
|
+
!@data.attributes[name].nil?
|
89
|
+
end
|
90
|
+
|
91
|
+
##
|
92
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#has_attributes?
|
93
|
+
def has_attributes?
|
94
|
+
!@data.attributes.empty?
|
95
|
+
end
|
96
|
+
|
97
|
+
##
|
98
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#append_element
|
99
|
+
def append_element(element)
|
100
|
+
@data.add_child(element.get_data)
|
101
|
+
self
|
102
|
+
end
|
103
|
+
|
104
|
+
##
|
105
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#prepend_element
|
106
|
+
def prepend_element(element)
|
107
|
+
@data.prepend_child(element.get_data)
|
108
|
+
self
|
109
|
+
end
|
110
|
+
|
111
|
+
##
|
112
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#get_children_elements
|
113
|
+
def get_children_elements
|
114
|
+
array = []
|
115
|
+
@data.element_children.each do |child|
|
116
|
+
array.push(NokogiriHTMLDOMElement.new(child))
|
117
|
+
end
|
118
|
+
array
|
119
|
+
end
|
120
|
+
|
121
|
+
##
|
122
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#get_children
|
123
|
+
def get_children
|
124
|
+
array = []
|
125
|
+
@data.children.each do |child|
|
126
|
+
array.push(NokogiriHTMLDOMElement.new(child)) if child.element?
|
127
|
+
array.push(NokogiriHTMLDOMTextNode.new(child)) if child.text?
|
128
|
+
end
|
129
|
+
array
|
130
|
+
end
|
131
|
+
|
132
|
+
##
|
133
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#normalize
|
134
|
+
def normalize
|
135
|
+
return self unless has_children?
|
136
|
+
|
137
|
+
last = nil
|
138
|
+
get_children.each do |child|
|
139
|
+
if child.is_a?(NokogiriHTMLDOMElement)
|
140
|
+
child.normalize
|
141
|
+
elsif child.is_a?(NokogiriHTMLDOMTextNode) &&
|
142
|
+
last.is_a?(NokogiriHTMLDOMTextNode)
|
143
|
+
child.prepend_text(last.get_text_content)
|
144
|
+
last.remove_node
|
145
|
+
end
|
146
|
+
last = child
|
147
|
+
end
|
148
|
+
|
149
|
+
self
|
150
|
+
end
|
151
|
+
|
152
|
+
##
|
153
|
+
# @see Hatemile::Util::Html::HTMLDOMNode#append_text
|
154
|
+
def append_text(text)
|
155
|
+
@data.add_child(Nokogiri::XML::Text.new(text, @data.document))
|
156
|
+
self
|
157
|
+
end
|
158
|
+
|
159
|
+
##
|
160
|
+
# @see Hatemile::Util::Html::HTMLDOMNode#prepend_text
|
161
|
+
def prepend_text(text)
|
162
|
+
@data.prepend_child(Nokogiri::XML::Text.new(text, @data.document))
|
163
|
+
self
|
164
|
+
end
|
165
|
+
|
166
|
+
##
|
167
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#has_children_elements?
|
168
|
+
def has_children_elements?
|
169
|
+
@data.element_children.empty? == false
|
170
|
+
end
|
171
|
+
|
172
|
+
##
|
173
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#has_children?
|
174
|
+
def has_children?
|
175
|
+
@data.children.each do |child|
|
176
|
+
return true if child.element? || child.text?
|
177
|
+
end
|
178
|
+
false
|
179
|
+
end
|
180
|
+
|
181
|
+
##
|
182
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#get_inner_html
|
183
|
+
def get_inner_html
|
184
|
+
html = ''
|
185
|
+
@data.children.each do |child|
|
186
|
+
html += to_string(child)
|
187
|
+
end
|
188
|
+
html
|
189
|
+
end
|
190
|
+
|
191
|
+
##
|
192
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#get_outer_html
|
193
|
+
def get_outer_html
|
194
|
+
to_string(@data)
|
195
|
+
end
|
196
|
+
|
197
|
+
##
|
198
|
+
# @see Hatemile::Util::Html::HTMLDOMNode#set_data
|
199
|
+
def set_data(data)
|
200
|
+
@data = data
|
201
|
+
set_node(data)
|
202
|
+
end
|
203
|
+
|
204
|
+
##
|
205
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#clone_element
|
206
|
+
def clone_element
|
207
|
+
NokogiriHTMLDOMElement.new(@data.clone)
|
208
|
+
end
|
209
|
+
|
210
|
+
##
|
211
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#get_first_element_child
|
212
|
+
def get_first_element_child
|
213
|
+
return nil unless has_children_elements?
|
214
|
+
get_children_elements.first
|
215
|
+
end
|
216
|
+
|
217
|
+
##
|
218
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#get_last_element_child
|
219
|
+
def get_last_element_child
|
220
|
+
return nil unless has_children_elements?
|
221
|
+
get_children_elements.last
|
222
|
+
end
|
223
|
+
|
224
|
+
##
|
225
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#get_first_node_child
|
226
|
+
def get_first_node_child
|
227
|
+
return nil unless has_children?
|
228
|
+
get_children.first
|
229
|
+
end
|
230
|
+
|
231
|
+
##
|
232
|
+
# @see Hatemile::Util::Html::HTMLDOMElement#get_last_node_child
|
233
|
+
def get_last_node_child
|
234
|
+
return nil unless has_children?
|
235
|
+
get_children.last
|
236
|
+
end
|
237
|
+
|
238
|
+
##
|
239
|
+
# Convert a Nokogiri Node to a HTML code.
|
240
|
+
#
|
241
|
+
# @param node [Nokogiri::XML::Node] The Nokogiri Node.
|
242
|
+
# @return [String] The HTML code of the Nokogiri Node.
|
243
|
+
def to_string(node)
|
244
|
+
string = ''
|
245
|
+
if node.element?
|
246
|
+
string += "<#{node.name.downcase}"
|
247
|
+
node.attributes.each do |attribute, value|
|
248
|
+
string += " #{attribute}=\"#{value}\""
|
249
|
+
end
|
250
|
+
string += if node.children.empty? && self_closing_tag?(node.name)
|
251
|
+
' />'
|
252
|
+
else
|
253
|
+
'>'
|
254
|
+
end
|
255
|
+
elsif node.comment?
|
256
|
+
string += node.to_s
|
257
|
+
elsif node.cdata?
|
258
|
+
string += node.to_s
|
259
|
+
elsif node.html?
|
260
|
+
document = node.to_s
|
261
|
+
string += document.split("\n")[0] + "\n"
|
262
|
+
elsif node.text?
|
263
|
+
string += node.text
|
264
|
+
end
|
265
|
+
|
266
|
+
node.children.each do |child|
|
267
|
+
string += to_string(child)
|
268
|
+
end
|
269
|
+
|
270
|
+
if node.element? &&
|
271
|
+
!(node.children.empty? && self_closing_tag?(node.name))
|
272
|
+
string += "</#{node.name.downcase}>"
|
273
|
+
end
|
274
|
+
string
|
275
|
+
end
|
276
|
+
|
277
|
+
##
|
278
|
+
# Returns if the tag is self closing.
|
279
|
+
#
|
280
|
+
# @param tag [String] The element tag.
|
281
|
+
# @return [Boolean] True if the tag is self closing or false if not.
|
282
|
+
def self_closing_tag?(tag)
|
283
|
+
SELF_CLOSING_TAGS.include?(tag.downcase)
|
284
|
+
end
|
285
|
+
|
286
|
+
##
|
287
|
+
# Compare if two elements object reference the same element.
|
288
|
+
#
|
289
|
+
# @param other [Hatemile::Util::Html::HTMLDOMElement] The other
|
290
|
+
# object.
|
291
|
+
# @return [Boolean] True if the object reference the same element or
|
292
|
+
# false if not.
|
293
|
+
def ==(other)
|
294
|
+
return false if other.nil?
|
295
|
+
return false unless other.is_a?(HTMLDOMElement)
|
296
|
+
get_data == other.get_data
|
297
|
+
end
|
298
|
+
end
|
299
|
+
end
|
300
|
+
end
|
301
|
+
end
|
302
|
+
end
|