Sha256: 1aee5e8aea86950d2a1969be1e1cead7704888ad7a3ce33cbcb9e6c9b3ce9b18
Contents?: true
Size: 1.2 KB
Versions: 21
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
21 entries across 21 versions & 1 rubygems
Version | Path |
---|---|
agilibox-1.9.6 | lib/agilibox/active_model_type_cast.rb |