class WiserWine::GrapeVariety
Attributes
color[RW]
descriptors[RW]
name[RW]
regions[RW]
url[RW]
Public Class Methods
all()
click to toggle source
# File lib/wiser_wine/grape_variety.rb, line 21 def self.all scrape_grapes end
new()
click to toggle source
# File lib/wiser_wine/grape_variety.rb, line 5 def initialize @descriptors = [] @regions = [] end
scrape_grape_details(grape)
click to toggle source
# File lib/wiser_wine/grape_variety.rb, line 49 def self.scrape_grape_details(grape) doc = Nokogiri::HTML open(grape.url) table = doc.css("table.infobox") rows = table.css("tr") rows.each do |row| if row.css("th").text.downcase.include?("color") || row.css("th").text.downcase.include?("colour") grape.color = row.css("td").text end if row.css("th").text.downcase.include?("region") grape.regions = row.css("td").text.split(", ") end end end
scrape_grapes()
click to toggle source
# File lib/wiser_wine/grape_variety.rb, line 26 def self.scrape_grapes scraped_grapes = [] url = "https://en.wikipedia.org/wiki/Wine_tasting" doc = Nokogiri::HTML open(url) tables = doc.css("table.multicol table.wikitable") tables.each do |table| rows = table.css("tr") rows.each do |row| name = row.css("td:first").text descriptors = row.css("td:nth-child(2)").text if name != "" grape = self.new grape.name = name grape.descriptors = descriptors.split(", ") grape.url = "https://en.wikipedia.org" << row.css("td:first a").attribute("href").text scrape_grape_details(grape) scraped_grapes << grape end end end scraped_grapes end
Public Instance Methods
print_details()
click to toggle source
# File lib/wiser_wine/grape_variety.rb, line 10 def print_details puts "#{self.name}\n\n" if self.color puts "Color: #{self.color}\n\n" end puts "Common descriptors for #{self.name} include: #{self.descriptors.join(", ")}\n\n" if self.regions.length > 0 puts "Notable regions include: #{self.regions.join(", ")}\n\n" end end