Class: Spree::LocalizedNumber
- Inherits:
-
Object
- Object
- Spree::LocalizedNumber
- Defined in:
- lib/spree/localized_number.rb
Class Method Summary collapse
-
.parse(number) ⇒ BigDecimal, anything
Given a string, strips all non-price-like characters from it, taking into account locale settings.
Class Method Details
.parse(number) ⇒ BigDecimal, anything
Given a string, strips all non-price-like characters from it, taking into account locale settings. Returns the input given anything else.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/spree/localized_number.rb', line 12 def self.parse(number) return number unless number.is_a?(String) # I18n.t('number.currency.format.delimiter') could be useful here, but is # unnecessary as it is stripped by the non_number_characters gsub. separator = I18n.t(:'number.currency.format.separator') non_number_characters = /[^0-9\-#{separator}]/ # strip everything else first number = number.gsub(non_number_characters, '') # then replace the locale-specific decimal separator with the standard separator if necessary number = number.gsub(separator, '.') unless separator == '.' # Handle empty string for ruby 2.4 compatibility BigDecimal(number.presence || 0) end |