mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-01 02:03:22 +00:00
Fix CodeClimate issues
This commit is contained in:
committed by
Rob Harrington
parent
a49c21cfd1
commit
0fb66ab258
@@ -14,29 +14,25 @@ module Spree
|
||||
old_setter = instance_method(setter) if table_exists? && !column_names.include?(attribute.to_s)
|
||||
|
||||
define_method(setter) do |number|
|
||||
if Spree::Config.enable_localized_number?
|
||||
if Spree::LocalizedNumber.valid_localizable_number?(number)
|
||||
number = Spree::LocalizedNumber.parse(number)
|
||||
else
|
||||
@invalid_localized_number ||= []
|
||||
@invalid_localized_number << attribute
|
||||
number = nil
|
||||
end
|
||||
if Spree::Config.enable_localized_number? && Spree::LocalizedNumber.valid_localizable_number?(number)
|
||||
number = Spree::LocalizedNumber.parse(number)
|
||||
elsif Spree::Config.enable_localized_number?
|
||||
@invalid_localized_number ||= []
|
||||
@invalid_localized_number << attribute
|
||||
number = nil
|
||||
end
|
||||
|
||||
if has_attribute?(attribute)
|
||||
self[attribute] = number
|
||||
else
|
||||
old_setter.bind(self).call(number)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
define_method(:validate_localizable_number) do
|
||||
return unless Spree::Config.enable_localized_number?
|
||||
|
||||
@invalid_localized_number.andand.each do |error_attribute|
|
||||
errors.set(error_attribute, [I18n.t('spree.localized_number.invalid_format')])
|
||||
end
|
||||
define_method(:validate_localizable_number) do
|
||||
return unless Spree::Config.enable_localized_number?
|
||||
@invalid_localized_number.andand.each do |error_attribute|
|
||||
errors.set(error_attribute, [I18n.t('spree.localized_number.invalid_format')])
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -53,16 +49,18 @@ module Spree
|
||||
|
||||
number = number.gsub(/[^\d.,-]/, '') # Replace all Currency Symbols, Letters and -- from the string
|
||||
|
||||
if number =~ /^.*[\.,]\d{1}$/ # If string ends in a single digit (e.g. ,2)
|
||||
number += "0" # make it ,20 in order for the result to be in "cents"
|
||||
end
|
||||
|
||||
unless number =~ /^.*[\.,]\d{2}$/ # If does not end in ,00 / .00 then
|
||||
number += "00" # add trailing 00 to turn it into cents
|
||||
end
|
||||
add_trailing_zeros(number)
|
||||
|
||||
number = number.gsub(/[\.,]/, '') # Replace all (.) and (,) so the string result becomes in "cents"
|
||||
number.to_d / 100 # Let to_decimal do the rest
|
||||
end
|
||||
|
||||
def self.add_trailing_zeros(number)
|
||||
# If string ends in a single digit (e.g. ,2), make it ,20 in order for the result to be in "cents"
|
||||
number << "0" if number =~ /^.*[\.,]\d{1}$/
|
||||
|
||||
# If does not end in ,00 / .00 then add trailing 00 to turn it into cents
|
||||
number << "00" unless number =~ /^.*[\.,]\d{2}$/
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
shared_examples "a model using the LocalizedNumber module" do |attributes|
|
||||
before do
|
||||
Spree::Config[:enable_localized_number?] = true
|
||||
end
|
||||
|
||||
after do
|
||||
Spree::Config[:enable_localized_number?] = false
|
||||
end
|
||||
|
||||
attributes.each do |attribute|
|
||||
setter = "#{attribute}="
|
||||
|
||||
|
||||
Reference in New Issue
Block a user