Sha256: a4986abe89644023bd8d364735622a818eaf30eb589ba960a82bc95c9420b691
Contents?: true
Size: 1.2 KB
Versions: 3
Compression:
Stored size: 1.2 KB
Contents
module Agilibox::ActiveModelTypeCast module Decimal def cast_value(value) if value.is_a?(String) super value.tr(",", ".").gsub(/[^-0-9\.]/, "") else super value end end end module Date # rubocop:disable Style/RegexpLiteral SANITIZABLE_FORMATS = [ /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/, /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/, ] # rubocop:enable Style/RegexpLiteral def cast_value(value) if sanitizable?(value) super sanitize(value) else super value end end private def sanitize(value) value.delete(" ") end def sanitizable?(value) return false unless value.is_a?(String) sanitized = sanitize(value) SANITIZABLE_FORMATS.any? { |r| r =~ sanitized } end end module Boolean def cast_value(value) value = value.strip if value.is_a?(String) super value end end end ActiveModel::Type::Date.prepend(Agilibox::ActiveModelTypeCast::Date) ActiveModel::Type::Boolean.prepend(Agilibox::ActiveModelTypeCast::Boolean) ActiveModel::Type::Decimal.prepend(Agilibox::ActiveModelTypeCast::Decimal) ActiveModel::Type::Float.prepend(Agilibox::ActiveModelTypeCast::Decimal)
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
agilibox-1.9.5 | lib/agilibox/active_model_type_cast.rb |
agilibox-1.9.4 | lib/agilibox/active_model_type_cast.rb |
agilibox-1.9.3 | lib/agilibox/active_model_type_cast.rb |