Class: Apartments::Apartment

Inherits:
Object
  • Object
show all
Defined in:
lib/apartments/apartment.rb

Constant Summary collapse

@@all =
[]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#aptObject

Returns the value of attribute apt.



3
4
5
# File 'lib/apartments/apartment.rb', line 3

def apt
  @apt
end

#areaObject

Returns the value of attribute area.



3
4
5
# File 'lib/apartments/apartment.rb', line 3

def area
  @area
end

#dateObject

Returns the value of attribute date.



3
4
5
# File 'lib/apartments/apartment.rb', line 3

def date
  @date
end

#descriptionObject

Returns the value of attribute description.



3
4
5
# File 'lib/apartments/apartment.rb', line 3

def description
  @description
end

#imgObject

Returns the value of attribute img.



3
4
5
# File 'lib/apartments/apartment.rb', line 3

def img
  @img
end

#neighborhoodObject

Returns the value of attribute neighborhood.



3
4
5
# File 'lib/apartments/apartment.rb', line 3

def neighborhood
  @neighborhood
end

#priceObject

Returns the value of attribute price.



3
4
5
# File 'lib/apartments/apartment.rb', line 3

def price
  @price
end

#urlObject

Returns the value of attribute url.



3
4
5
# File 'lib/apartments/apartment.rb', line 3

def url
  @url
end

Class Method Details

.allObject



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

.countObject



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_urlObject



56
57
58
# File 'lib/apartments/apartment.rb', line 56

def apt_url
  @apt_url ||= self.url
end

#docObject



52
53
54
# File 'lib/apartments/apartment.rb', line 52

def doc
  @doc ||= Apartments::Scraper.scrape_detail(self.url)
end

#titleObject



39
40
41
# File 'lib/apartments/apartment.rb', line 39

def title
  @title ||= doc.css('h2.postingtitle span#titletextonly').text.gsub(/[^[:print:]]/i, '')
end