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