class Dynamoid::TypeCasting::SetTypeCaster
Public Instance Methods
process(value)
click to toggle source
# File lib/dynamoid/type_casting.rb, line 111 def process(value) set = type_cast_to_set(value) if set.present? && @options[:of].present? process_typed_set(set) else set end end
Private Instance Methods
element_options()
click to toggle source
# File lib/dynamoid/type_casting.rb, line 149 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/type_casting.rb, line 141 def element_type if @options[:of].is_a?(Hash) @options[:of].keys.first else @options[:of] end end
process_typed_set(set)
click to toggle source
# File lib/dynamoid/type_casting.rb, line 131 def process_typed_set(set) type_caster = TypeCasting.find_type_caster(element_options) if type_caster.nil? raise ArgumentError, "Set element type #{element_type} isn't supported" end set.map { |el| type_caster.process(el) }.to_set end
type_cast_to_set(value)
click to toggle source
# File lib/dynamoid/type_casting.rb, line 123 def type_cast_to_set(value) if value.is_a?(Set) value.dup elsif value.respond_to?(:to_set) value.to_set end end