Class: RubyCheerio

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby-cheerio.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(html = nil) ⇒ RubyCheerio

This method defines the instance of a RubyCheerio object with attributes like text, html and if an argument is not passed, it throws an ArgumentError



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/ruby-cheerio.rb', line 15

def initialize html=nil
	if valid_args? html
		if html.instance_of? Nokogiri::HTML::Document
			@html_nokogiri = html
		elsif html.instance_of? String and !html.empty?
			html = html.strip
			@html_nokogiri = Nokogiri::HTML(html)
		end
		@text = @html_nokogiri.text 
		@html = Nokogiri::HTML(@html_nokogiri.to_html).css('body').inner_html
	end
end

Instance Attribute Details

#htmlObject

This creates an attribute readers and writers needed for the instance variables.



10
11
12
# File 'lib/ruby-cheerio.rb', line 10

def html
  @html
end

#textObject

This creates an attribute readers and writers needed for the instance variables.



10
11
12
# File 'lib/ruby-cheerio.rb', line 10

def text
  @text
end

Instance Method Details

#find(selector = nil) ⇒ Object

This method can find an element using element-name, class-name, id-name or all together. This works like finding elements using jQuery styled selectors.



31
32
33
34
35
36
37
38
39
40
# File 'lib/ruby-cheerio.rb', line 31

def find selector=nil
	if valid_args? selector
		elements_list = @html_nokogiri.css(selector).to_a.map{|e| self.class.new(e.to_html)}
		if !elements_list.nil?
			return elements_list
		else
			return nil
		end
	end
end

#prop(selector, attribute) ⇒ Object

This method can return the property of an element, which is selected using the selector being passed.



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/ruby-cheerio.rb', line 45

def prop(selector, attribute)
	if valid_args?(selector, attribute)
		element = @html_nokogiri.css(selector)
		if element.instance_of? Nokogiri::XML::NodeSet
			return element[0][attribute]
		elsif element.instance_of? Nokogiri::XML::Element
			return element[attribute]
		else
			return nil
		end
	end
end