1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
# frozen_string_literal: true
module Aws
module Partitions
class PartitionList
include Enumerable
def initialize
@partitions = {}
end
# @return [Enumerator<Partition>]
def each(&block)
@partitions.each_value(&block)
end
# @param [String] partition_name
# @return [Partition]
def partition(partition_name)
if @partitions.key?(partition_name)
@partitions[partition_name]
else
msg = "invalid partition name #{partition_name.inspect}; valid "\
"partition names include %s" % [@partitions.keys.join(', ')]
raise ArgumentError, msg
end
end
# @return [Array<Partition>]
def partitions
@partitions.values
end
# @param [Partition] partition
# @api private
def add_partition(partition)
if Partition === partition
@partitions[partition.name] = partition
else
raise ArgumentError, "expected Partition, got #{partition.class}"
end
end
# Removed all partitions.
# @api private
def clear
@partitions = {}
end
class << self
# @api private
def build(partitions)
partitions['partitions'].inject(PartitionList.new) do |list, partition|
list.add_partition(Partition.build(partition))
list
end
end
end
end
end
end
|