lib/permit_params.rb in sinatra-my-params-0.0.9 vs lib/permit_params.rb in sinatra-my-params-0.0.10

- old
+ new

@@ -64,18 +64,27 @@ def coerce_integer(param, options = {}) Integer(param, options[:integer_precision] || 10) end def coerce_array(param, options = {}) - Array(param.split(options[:delimiter] || ',').map(&:strip)) + delimiter = valid_delimiter?(param, options[:delimiter]) + return unless delimiter + + Array(param.split(delimiter).map(&:strip)) end def coerce_hash(param, options = {}) return param if param.is_a?(Hash) - key_value = param.split(options[:delimiter] || ',').map(&:strip).map do |c| - c.split(options[:separator] || ':').map(&:strip) + delimiter = valid_delimiter?(param, options[:delimiter]) + return unless delimiter + + separator = valid_separator?(param, options[:separator]) + return unless separator + + key_value = param.split(delimiter).map(&:strip).map do |c| + c.split(separator).map(&:strip) end Hash[key_value] end def coerce_boolean(param) @@ -85,9 +94,19 @@ /^(true|t|yes|y|1)$/i === param.to_s ? true : nil end raise ArgumentError if coerced.nil? coerced + end + + def valid_delimiter?(param, delimiter) + delimiter ||= ',' + delimiter if delimiter && param.include?(delimiter) + end + + def valid_separator?(param, separator) + separator ||= ':' + separator if separator && param.include?(separator) end def coerce_shape(param, options = {}) hash = coerce_hash(param) has_shape?(hash, options[:shape]) ? hash : nil