Sha256: 41f04bc958883f34fd4fef9c3dfbbb306fa192dabb7f38ab7301e7e1038e21ea

Contents?: true

Size: 762 Bytes

Versions: 2

Compression:

Stored size: 762 Bytes

Contents

module Warehouse
  module Item
    Random = Struct.new(:items, :qty) do
      attr_accessor :code, :title, :price

      def type
        'random'
      end

      def random?
        true
      end

      def single?
        false
      end

      def fetch
        @fetch ||= fetch!
      end

      def fetch!
        random_items = {}
        (1..qty).each do
          item = items.sample
          random_items[item.code] ||= Warehouse::Item::Code.new(item.code, item.title, 0, item.price)
          random_items[item.code].qty += 1
        end
        Warehouse::List.new(random_items.values)
      end

      def persisted?; end

      def deep_dup
        Warehouse::Item::Random.new(items.map { |item| item.deep_dup }, qty)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
warehouse_items-0.3.0 lib/warehouse/item/random.rb
warehouse_items-0.2.0 lib/warehouse/item/random.rb