Class: Apartments::Apartment
- Inherits:
-
Object
- Object
- Apartments::Apartment
- Defined in:
- lib/apartments/apartment.rb
Constant Summary collapse
- @@all =
[]
Instance Attribute Summary collapse
-
#apt ⇒ Object
Returns the value of attribute apt.
-
#area ⇒ Object
Returns the value of attribute area.
-
#date ⇒ Object
Returns the value of attribute date.
-
#description ⇒ Object
Returns the value of attribute description.
-
#img ⇒ Object
Returns the value of attribute img.
-
#neighborhood ⇒ Object
Returns the value of attribute neighborhood.
-
#price ⇒ Object
Returns the value of attribute price.
-
#url ⇒ Object
Returns the value of attribute url.
Class Method Summary collapse
Instance Method Summary collapse
- #apt_url ⇒ Object
- #doc ⇒ Object
-
#initialize(area = nil, price = nil, neighborhood = nil, url = nil) ⇒ Apartment
constructor
A new instance of Apartment.
- #title ⇒ Object
Constructor Details
#initialize(area = nil, price = nil, neighborhood = nil, url = nil) ⇒ Apartment
Returns a new instance of Apartment.
18 19 20 21 22 23 24 |
# File 'lib/apartments/apartment.rb', line 18 def initialize(area=nil, price=nil, neighborhood=nil, url=nil) @area = area @price = price @neighborhood = neighborhood @url = url @@all << self end |
Instance Attribute Details
#apt ⇒ Object
Returns the value of attribute apt.
3 4 5 |
# File 'lib/apartments/apartment.rb', line 3 def apt @apt end |
#area ⇒ Object
Returns the value of attribute area.
3 4 5 |
# File 'lib/apartments/apartment.rb', line 3 def area @area end |
#date ⇒ Object
Returns the value of attribute date.
3 4 5 |
# File 'lib/apartments/apartment.rb', line 3 def date @date end |
#description ⇒ Object
Returns the value of attribute description.
3 4 5 |
# File 'lib/apartments/apartment.rb', line 3 def description @description end |
#img ⇒ Object
Returns the value of attribute img.
3 4 5 |
# File 'lib/apartments/apartment.rb', line 3 def img @img end |
#neighborhood ⇒ Object
Returns the value of attribute neighborhood.
3 4 5 |
# File 'lib/apartments/apartment.rb', line 3 def neighborhood @neighborhood end |
#price ⇒ Object
Returns the value of attribute price.
3 4 5 |
# File 'lib/apartments/apartment.rb', line 3 def price @price end |
#url ⇒ Object
Returns the value of attribute url.
3 4 5 |
# File 'lib/apartments/apartment.rb', line 3 def url @url end |
Class Method Details
.all ⇒ Object
26 27 28 29 |
# File 'lib/apartments/apartment.rb', line 26 def self.all # @@all.sort_by { |apt| apt.neighborhood.downcase } @@all.sort! { |a, b| a.neighborhood <=> b.neighborhood } end |
.count ⇒ Object
31 32 33 |
# File 'lib/apartments/apartment.rb', line 31 def self.count @@all.length end |
.find(id) ⇒ Object
35 36 37 |
# File 'lib/apartments/apartment.rb', line 35 def self.find(id) @@all[id - 1] end |
.new_from_index_page(apt) ⇒ Object
8 9 10 11 12 13 14 15 |
# File 'lib/apartments/apartment.rb', line 8 def self.new_from_index_page(apt) url = apt.css('a').attribute('href').value unless apt.css('a').attribute('href').nil? area = apt.css('span.housing').text.gsub("\n","").gsub("-","").squeeze.strip unless apt.css('span.housing').nil? price = apt.css('span.result-price')[0].text unless apt.css('span.result-price')[0].nil? neighborhood = apt.css('p.result-info').css('span.result-hood').text.gsub(/[()]/, "").strip unless apt.css('p.result-info').css('span.result-hood').nil? self.new(area, price, neighborhood, url) end |
Instance Method Details
#apt_url ⇒ Object
56 57 58 |
# File 'lib/apartments/apartment.rb', line 56 def apt_url @apt_url ||= self.url end |
#doc ⇒ Object
52 53 54 |
# File 'lib/apartments/apartment.rb', line 52 def doc @doc ||= Apartments::Scraper.scrape_detail(self.url) end |
#title ⇒ Object
39 40 41 |
# File 'lib/apartments/apartment.rb', line 39 def title @title ||= doc.css('h2.postingtitle span#titletextonly').text.gsub(/[^[:print:]]/i, '') end |