DistroPropaganda/code/rails31/e1/views/app/models/shipping.rb
2018-11-24 13:20:20 +01:00

36 lines
1.2 KiB
Ruby

#---
# Excerpted from "Agile Web Development with Rails",
# published by The Pragmatic Bookshelf.
# Copyrights apply to this code. It may not be used to create training material,
# courses, books, articles, and the like. Contact us if you are in doubt.
# We make no guarantees that this code is fit for any purpose.
# Visit http://www.pragmaticprogrammer.com/titles/rails4 for more book information.
#---
class Shipping
ShippingOption = Struct.new(:id, :name)
class ShippingType
attr_reader :type_name, :options
def initialize(name)
@type_name = name
@options = []
end
def <<(option)
@options << option
end
end
ground = ShippingType.new("SLOW")
ground << ShippingOption.new(100, "Ground Parcel")
ground << ShippingOption.new(101, "Media Mail")
regular = ShippingType.new("MEDIUM")
regular << ShippingOption.new(200, "Airmail")
regular << ShippingOption.new(201, "Certified Mail")
priority = ShippingType.new("FAST")
priority << ShippingOption.new(300, "Priority")
priority << ShippingOption.new(301, "Express")
OPTIONS = [ ground, regular, priority ]
end