lib/ransack/nodes/value.rb in ransack-1.8.3 vs lib/ransack/nodes/value.rb in ransack-1.8.4

- old
+ new

@@ -21,89 +21,95 @@ def hash value.hash end def cast(type) - case type - when :date - cast_to_date(value) - when :datetime, :timestamp, :time - cast_to_time(value) - when :boolean - cast_to_boolean(value) - when :integer - cast_to_integer(value) - when :float - cast_to_float(value) - when :decimal - cast_to_decimal(value) - else - cast_to_string(value) - end - end + case type + when :date + cast_to_date(value) + when :datetime, :timestamp, :time + cast_to_time(value) + when :boolean + cast_to_boolean(value) + when :integer + cast_to_integer(value) + when :float + cast_to_float(value) + when :decimal + cast_to_decimal(value) + when :money + cast_to_money(value) + else + cast_to_string(value) + end + end - def cast_to_date(val) - if val.respond_to?(:to_date) - val.to_date rescue nil - else - y, m, d = *[val].flatten - m ||= 1 - d ||= 1 - Date.new(y,m,d) rescue nil - end - end + def cast_to_date(val) + if val.respond_to?(:to_date) + val.to_date rescue nil + else + y, m, d = *[val].flatten + m ||= 1 + d ||= 1 + Date.new(y,m,d) rescue nil + end + end - def cast_to_time(val) - if val.is_a?(Array) - Time.zone.local(*val) rescue nil - else - unless val.acts_like?(:time) - val = val.is_a?(String) ? Time.zone.parse(val) : val.to_time rescue val - end - val.in_time_zone rescue nil - end - end + def cast_to_time(val) + if val.is_a?(Array) + Time.zone.local(*val) rescue nil + else + unless val.acts_like?(:time) + val = val.is_a?(String) ? Time.zone.parse(val) : val.to_time rescue val + end + val.in_time_zone rescue nil + end + end - def cast_to_boolean(val) - if Constants::TRUE_VALUES.include?(val) - true - elsif Constants::FALSE_VALUES.include?(val) - false - else - nil - end - end + def cast_to_boolean(val) + if Constants::TRUE_VALUES.include?(val) + true + elsif Constants::FALSE_VALUES.include?(val) + false + else + nil + end + end - def cast_to_string(val) - val.respond_to?(:to_s) ? val.to_s : String.new(val) - end + def cast_to_string(val) + val.respond_to?(:to_s) ? val.to_s : String.new(val) + end - def cast_to_integer(val) - val.blank? ? nil : val.to_i - end + def cast_to_integer(val) + val.blank? ? nil : val.to_i + end - def cast_to_float(val) - val.blank? ? nil : val.to_f - end + def cast_to_float(val) + val.blank? ? nil : val.to_f + end - def cast_to_decimal(val) - if val.blank? - nil - elsif val.class == BigDecimal - val - elsif val.respond_to?(:to_d) - val.to_d - else - val.to_s.to_d - end + def cast_to_decimal(val) + if val.blank? + nil + elsif val.class == BigDecimal + val + elsif val.respond_to?(:to_d) + val.to_d + else + val.to_s.to_d end + end + + def cast_to_money(val) + val.blank? ? nil : val.to_f.to_s + end def inspect "Value <#{value}>" end - def array_of_arrays?(val) - Array === val && Array === val.first - end + def array_of_arrays?(val) + Array === val && Array === val.first + end end end end