class Apartments::Apartment

Attributes

apt[RW]
area[RW]
date[RW]
description[RW]
img[RW]
neighborhood[RW]
price[RW]
url[RW]

Public Class Methods

all() click to toggle source
# 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() click to toggle source
# File lib/apartments/apartment.rb, line 31
def self.count
  @@all.length
end
find(id) click to toggle source
# File lib/apartments/apartment.rb, line 35
def self.find(id)
  @@all[id - 1]
end
new(area=nil, price=nil, neighborhood=nil, url=nil) click to toggle source
# 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
new_from_index_page(apt) click to toggle source
# 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

Public Instance Methods

apt_url() click to toggle source
# File lib/apartments/apartment.rb, line 56
def apt_url
  @apt_url ||= self.url
end
doc() click to toggle source
# File lib/apartments/apartment.rb, line 52
def doc
  @doc ||= Apartments::Scraper.scrape_detail(self.url)
end
title() click to toggle source
# File lib/apartments/apartment.rb, line 39
def title
  @title ||= doc.css('h2.postingtitle span#titletextonly').text.gsub(/[^[:print:]]/i, '')
end