def type_indicator(value, context)
case
when value.kind_of?(DynamoDB::Binary) then :b
when value.respond_to?(:to_str) then :s
when value.kind_of?(Numeric) then :n
when value.respond_to?(:each)
indicator = nil
value.each do |v|
member_indicator = type_indicator(v, context)
raise_error("nested collections", context) if
member_indicator.to_s.size > 1
raise_error("mixed types", context) if
indicator and member_indicator != indicator
indicator = member_indicator
end
indicator ||= :s
"#{indicator}s""#{indicator}s"
when value == :empty_number_set
:ns
else
raise_error("unsupported attribute type #{value.class}", context)
end
end