Skip to content

Commit fa57c64

Browse files
committed
Merge pull request #33 from kaapa/elements_by_class_name
Finding an element by a class name
2 parents 92141d2 + 623c555 commit fa57c64

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

lib/arbre/element.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def get_elements_by_class_name(class_name)
108108
elements = ElementCollection.new
109109
children.each do |child|
110110
elements << child if child.class_list.include?(class_name)
111-
elements.concat(child.get_elements_by_tag_name(tag_name))
111+
elements.concat(child.get_elements_by_class_name(class_name))
112112
end
113113
elements
114114
end
@@ -129,7 +129,7 @@ def indent_level
129129
def each(&block)
130130
[to_s].each(&block)
131131
end
132-
132+
133133
def inspect
134134
to_s
135135
end

lib/arbre/html/text_node.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ def build(string)
2222
@content = string
2323
end
2424

25+
def class_list
26+
[]
27+
end
28+
2529
def tag_name
2630
nil
2731
end

spec/arbre/unit/element_finder_methods_spec.rb

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@
6161
}.get_elements_by_class_name("my_class").size).to eq(0)
6262
end
6363

64+
it "should allow text nodes on tree" do
65+
expect(arbre {
66+
text_node "text"
67+
}.get_elements_by_class_name("my_class").size).to eq(0)
68+
end
69+
6470
it "should return a child element" do
6571
html = arbre do
6672
div :class => "some_class"
@@ -95,7 +101,16 @@
95101
expect(elements[0]).to be_instance_of(Arbre::HTML::Div)
96102
end
97103

98-
# TODO: find children's children by class name
104+
it "should return a grandchild element" do
105+
html = arbre do
106+
div :class => "some_class" do
107+
div :class => "my_class"
108+
end
109+
end
110+
elements = html.get_elements_by_class_name("my_class")
111+
expect(elements.size).to eq(1)
112+
expect(elements[0]).to be_instance_of(Arbre::HTML::Div)
113+
end
99114

100115
end
101116
end

0 commit comments

Comments
 (0)