class Coupons

Public Class Methods

from(source, total_price_without_tax) click to toggle source
# File lib/order_coupon.rb, line 33
def self.from(source, total_price_without_tax)
  doc = Nokogiri::HTML(source)
  coupons = doc.css("li").map { |item| Coupon.new(item, total_price_without_tax) }

  # Sort coupons by real value, expiration date while deranking those that cannot be used (error)
  coupons = [coupons.reject(&:error), coupons.select(&:error)].map do |coups|
    coups.group_by(&:real_value).sort.reverse.map do |_real_value, same_value_coupons|
      same_value_coupons.sort_by(&:expiry)
    end
  end.flatten

  Coupons.new(coupons)
end

Public Instance Methods

selection_list() click to toggle source
# File lib/order_coupon.rb, line 47
def selection_list
  map(&:list_item)
end