class FormObjects::ParamsConverter::CollectionConverter
Public Class Methods
new(params)
click to toggle source
# File lib/form_objects/params_converter/collection_converter.rb, line 4 def initialize(params) @params = params end
Public Instance Methods
convert_attributes_to_array(object)
click to toggle source
# File lib/form_objects/params_converter/collection_converter.rb, line 12 def convert_attributes_to_array(object) return object unless object.respond_to?(:each_pair) object.inject({}) { |hash, attributes| key, value = attributes.first, attributes.last value = value.to_a.sort.map { |attributes| attributes.last } if candidate_for_conversion?(key, value) hash[key] = convert_attributes_to_array(value) hash } end
params()
click to toggle source
# File lib/form_objects/params_converter/collection_converter.rb, line 8 def params convert_attributes_to_array(@params) end
Private Instance Methods
attribute_key?(key)
click to toggle source
# File lib/form_objects/params_converter/collection_converter.rb, line 45 def attribute_key?(key) key =~ /_attributes$/ end
candidate_for_conversion?(key, value)
click to toggle source
# File lib/form_objects/params_converter/collection_converter.rb, line 26 def candidate_for_conversion?(key, value) attribute_key?(key) and value.is_a?(Hash) and incrementing_sequence?(value.keys) rescue ArgumentError false end
generate_sequence_from(keys)
click to toggle source
# File lib/form_objects/params_converter/collection_converter.rb, line 32 def generate_sequence_from(keys) keys.map { |key| Integer(key) }.sort end
incrementing_sequence?(keys)
click to toggle source
# File lib/form_objects/params_converter/collection_converter.rb, line 40 def incrementing_sequence?(keys) sequence = generate_sequence_from(keys) sequence == sequence_to(sequence.max) end
sequence_to(max)
click to toggle source
# File lib/form_objects/params_converter/collection_converter.rb, line 36 def sequence_to(max) (0..max).to_a end