Sha256: c3ebf15c22b2457acd72342cc1254ca5d5daf67159ba312cebe31ffd368f9351
Contents?: true
Size: 1.1 KB
Versions: 2
Compression:
Stored size: 1.1 KB
Contents
# frozen_string_literal: true module Normalizy module Filters module Money class << self def call(input, options = {}) return input unless input.is_a?(String) value = input.gsub(/[^[0-9-]#{separator(options)}]/, '') return nil if value.blank? if cents?(options) value = precisioned(value, options).delete('.') if value.include? separator(options) else value = precisioned(value, options) end return value.send(options[:cast]) if options[:cast] value end private def cents?(options) options[:type]&.to_sym == :cents end def precision(options) options.fetch(:precision, I18n.t('number.currency.format.precision', default: 2)) end def precisioned(value, options) format("%0.#{precision(options)}f", value.sub(separator(options), '.')) end def separator(options) options.fetch(:separator, I18n.t('number.currency.format.separator', default: '.')) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
normalizy-1.7.0 | lib/normalizy/filters/money.rb |
normalizy-1.6.0 | lib/normalizy/filters/money.rb |