class Dynamoid::Dumping::SetDumper

set -> set

Constants

ALLOWED_TYPES

Public Instance Methods

process(set) click to toggle source
# File lib/dynamoid/dumping.rb, line 103
def process(set)
  if @options.key?(:of)
    process_typed_collection(set)
  else
    set
  end
end

Private Instance Methods

allowed_type?() click to toggle source
# File lib/dynamoid/dumping.rb, line 128
def allowed_type?
  ALLOWED_TYPES.include?(element_type) || element_type.is_a?(Class)
end
element_options() click to toggle source
# File lib/dynamoid/dumping.rb, line 140
def element_options
  if @options[:of].is_a?(Hash)
    @options[:of][element_type].dup.tap do |options|
      options[:type] = element_type
    end
  else
    { type: element_type }
  end
end
element_type() click to toggle source
# File lib/dynamoid/dumping.rb, line 132
def element_type
  if @options[:of].is_a?(Hash)
    @options[:of].keys.first
  else
    @options[:of]
  end
end
process_typed_collection(set) click to toggle source
# File lib/dynamoid/dumping.rb, line 113
def process_typed_collection(set)
  if allowed_type?
    dumper = Dumping.find_dumper(element_options)
    result = set.map { |el| dumper.process(el) }

    if element_type == :string
      result.reject!(&:empty?)
    end

    result.to_set
  else
    raise ArgumentError, "Set element type #{element_type} isn't supported"
  end
end