class Vendor
Constants
- INDEX_BASE_PATH
Attributes
index_pagenum[RW]
name[RW]
number[RW]
page_url[RW]
Public Class Methods
all()
click to toggle source
# File lib/blackfriday2016/vendor.rb, line 29 def self.all @@all end
create_from_collection(vendor_index)
click to toggle source
Uses the Scraper
class to create new vendors with all the details
# File lib/blackfriday2016/vendor.rb, line 17 def self.create_from_collection(vendor_index) vendor_index.each do |vendor| self.new(vendor) end end
create_vendors()
click to toggle source
Scrapes from the index page, and creates vendors
# File lib/blackfriday2016/vendor.rb, line 24 def self.create_vendors vendor_index = Scraper.scrape_index_page(INDEX_BASE_PATH)# + 'index.html') self.create_from_collection(vendor_index) end
display_vendors(page_num=1)
click to toggle source
Displays list of Stores
# File lib/blackfriday2016/vendor.rb, line 57 def self.display_vendors(page_num=1) puts "-------------------------------------------------------".colorize(:light_blue) puts "List of Stores - Black Friday Deals - Page #{page_num}:".center(55) puts "-------------------------------------------------------".colorize(:light_blue) self.all.each do |vendor| puts "#{vendor.number}. ".colorize(:light_red) + "#{vendor.name}".colorize(:light_blue) if vendor.index_pagenum == page_num end self.index_page_options(page_num) end
go_to_next_page(page_num)
click to toggle source
Method to display next page of stores list if applicable
# File lib/blackfriday2016/vendor.rb, line 78 def self.go_to_next_page(page_num) if page_num+1 <= self.page_count self.display_vendors(page_num+1) else puts "You have reached the end of Store List.".colorize(:light_blue) self.index_page_options(page_num) end end
go_to_prev_page(page_num)
click to toggle source
Method to display previous page of stores list if applicable
# File lib/blackfriday2016/vendor.rb, line 88 def self.go_to_prev_page(page_num) if page_num-1 >= 1 self.display_vendors(page_num-1) else puts "You have reached the beginning of Store List.".colorize(:light_blue) self.index_page_options(page_num) end end
go_to_store_deals(store_num, page_num)
click to toggle source
Method to display the first page of deals of a particular selected store
# File lib/blackfriday2016/vendor.rb, line 98 def self.go_to_store_deals(store_num, page_num) if store_num <= self.all.count Dealpage.display_deal_details(self.return_deal_url(store_num)) else puts "You have entered an invalid Store Number. Please make a valid choice.".colorize(:light_blue) self.index_page_options(page_num) end end
index_page_options(page_num=1)
click to toggle source
Display Store List menu options
# File lib/blackfriday2016/vendor.rb, line 108 def self.index_page_options(page_num=1) puts "-------------------------------------------------------".colorize(:light_blue) puts "Please select from options below:".colorize(:green) self.print_prev_page if (page_num > 1 && page_num <= self.page_count) self.print_next_page if page_num < self.page_count puts "\n" + "| Store '" + "#".colorize(:light_red) + "' to " + "See Deals".colorize(:light_blue) + " from a particular Store |" puts "| '" + "x".colorize(:light_red) + "' to " + "Exit".colorize(:light_blue) + " the program |" print "\n" + "Please Enter your selection: ".colorize(:green) input = gets.strip.downcase if input == "n" self.go_to_next_page(page_num) elsif input == "p" self.go_to_prev_page(page_num) elsif (input.include?(".") || input.include?(",")) #To make float inputs invalid puts "You have entered an invalid choice. Please make a valid choice.".colorize(:light_blue) self.index_page_options(page_num) elsif input.to_i > 0 store_num = input.to_i self.go_to_store_deals(store_num, page_num) elsif input == "x" puts "Goodbye! Have a nice day.".colorize(:light_blue) else puts "You have entered an invalid choice. Please make a valid choice.".colorize(:light_blue) self.index_page_options(page_num) end end
new(vendor_details)
click to toggle source
Initializes each of the vendor attributes
# File lib/blackfriday2016/vendor.rb, line 11 def initialize(vendor_details) vendor_details.each {|key,value| self.send(("#{key}="), value)} @@all << self end
page_count()
click to toggle source
Count the total number of vendor index pages
# File lib/blackfriday2016/vendor.rb, line 34 def self.page_count (self.all.count/10.to_f).ceil end
print_next_page()
click to toggle source
Prints Next Page indicator
# File lib/blackfriday2016/vendor.rb, line 73 def self.print_next_page print "| '" + "n".colorize(:light_red) + "' >>> " + "Next Page".colorize(:light_blue) + " |" end
print_prev_page()
click to toggle source
Prints Previous Page indicator
# File lib/blackfriday2016/vendor.rb, line 68 def self.print_prev_page print "| '" + "p".colorize(:light_red) + "' <<< " + "Previous Page".colorize(:light_blue) + " |" end
return_deal_url(input)
click to toggle source
Returns the deal page url of a particular vendor
# File lib/blackfriday2016/vendor.rb, line 39 def self.return_deal_url(input) return_url = nil self.all.each do |vendor| return_url = vendor.page_url if vendor.number == input end return_url end
return_vendor_name(page_url)
click to toggle source
Returns vendor name when given a deal page url
# File lib/blackfriday2016/vendor.rb, line 48 def self.return_vendor_name(page_url) vendor_name = nil self.all.each do |vendor| vendor_name = vendor.name if vendor.page_url == page_url end vendor_name end