Class: Vendor
- Inherits:
-
Object
- Object
- Vendor
- Defined in:
- lib/blackfriday2016/vendor.rb
Constant Summary collapse
- INDEX_BASE_PATH =
"http://dealnews.com/black-friday/"- @@all =
[]
Instance Attribute Summary collapse
-
#index_pagenum ⇒ Object
Returns the value of attribute index_pagenum.
-
#name ⇒ Object
Returns the value of attribute name.
-
#number ⇒ Object
Returns the value of attribute number.
-
#page_url ⇒ Object
Returns the value of attribute page_url.
Class Method Summary collapse
- .all ⇒ Object
-
.create_from_collection(vendor_index) ⇒ Object
Uses the Scraper class to create new vendors with all the details.
- .create_vendors ⇒ Object
- .display_vendors(page_num = 1) ⇒ Object
- .index_page_options(page_num = 1) ⇒ Object
-
.page_count ⇒ Object
Count the total number of vendor index pages.
- .print_next_page ⇒ Object
- .print_prev_page ⇒ Object
-
.return_deal_url(input) ⇒ Object
Returns the deal page url of a particular vendor.
-
.return_vendor_name(page_url) ⇒ Object
Returns vendor name when given a deal page url.
Instance Method Summary collapse
-
#initialize(vendor_details) ⇒ Vendor
constructor
A new instance of Vendor.
Constructor Details
#initialize(vendor_details) ⇒ Vendor
Returns a new instance of Vendor.
10 11 12 13 |
# File 'lib/blackfriday2016/vendor.rb', line 10 def initialize(vendor_details) vendor_details.each {|key,value| self.send(("#{key}="), value)} @@all << self end |
Instance Attribute Details
#index_pagenum ⇒ Object
Returns the value of attribute index_pagenum.
6 7 8 |
# File 'lib/blackfriday2016/vendor.rb', line 6 def index_pagenum @index_pagenum end |
#name ⇒ Object
Returns the value of attribute name.
6 7 8 |
# File 'lib/blackfriday2016/vendor.rb', line 6 def name @name end |
#number ⇒ Object
Returns the value of attribute number.
6 7 8 |
# File 'lib/blackfriday2016/vendor.rb', line 6 def number @number end |
#page_url ⇒ Object
Returns the value of attribute page_url.
6 7 8 |
# File 'lib/blackfriday2016/vendor.rb', line 6 def page_url @page_url end |
Class Method Details
.all ⇒ Object
27 28 29 |
# File 'lib/blackfriday2016/vendor.rb', line 27 def self.all @@all end |
.create_from_collection(vendor_index) ⇒ Object
Uses the Scraper class to create new vendors with all the details
16 17 18 19 20 |
# File 'lib/blackfriday2016/vendor.rb', line 16 def self.create_from_collection(vendor_index) vendor_index.each do |vendor| self.new(vendor) end end |
.create_vendors ⇒ Object
22 23 24 25 |
# File 'lib/blackfriday2016/vendor.rb', line 22 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) ⇒ Object
54 55 56 57 58 59 60 61 62 |
# File 'lib/blackfriday2016/vendor.rb', line 54 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.(page_num) end |
.index_page_options(page_num = 1) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/blackfriday2016/vendor.rb', line 72 def self.(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" 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.(page_num) end elsif input == "p" 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.(page_num) end elsif input.include?(".") puts "You have entered an invalid choice. Please make a valid choice.".colorize(:light_blue) self.(page_num) elsif input.to_i > 0 store_num = input.to_i 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.(page_num) end 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.(page_num) end end |
.page_count ⇒ Object
Count the total number of vendor index pages
32 33 34 |
# File 'lib/blackfriday2016/vendor.rb', line 32 def self.page_count (self.all.count/10.to_f).ceil end |
.print_next_page ⇒ Object
68 69 70 |
# File 'lib/blackfriday2016/vendor.rb', line 68 def self.print_next_page print "| '" + "n".colorize(:light_red) + "' >>> " + "Next Page".colorize(:light_blue) + " |" end |
.print_prev_page ⇒ Object
64 65 66 |
# File 'lib/blackfriday2016/vendor.rb', line 64 def self.print_prev_page print "| '" + "p".colorize(:light_red) + "' <<< " + "Previous Page".colorize(:light_blue) + " |" end |
.return_deal_url(input) ⇒ Object
Returns the deal page url of a particular vendor
37 38 39 40 41 42 43 |
# File 'lib/blackfriday2016/vendor.rb', line 37 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) ⇒ Object
Returns vendor name when given a deal page url
46 47 48 49 50 51 52 |
# File 'lib/blackfriday2016/vendor.rb', line 46 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 |