Sha256: 809b959160198a41c4cd3969e9d22428677b5725285858cadb1131a0b8bbc845

Contents?: true

Size: 609 Bytes

Versions: 68

Compression:

Stored size: 609 Bytes

Contents

module Acfs::Model::Attributes

  class Base
    attr_reader :options

    def initialize(opts = {})
      @options = opts
      @options.reverse_merge! allow_nil: true
    end

    def nil_allowed?
      !!options[:allow_nil]
    end

    def blank_allowed?
      !!options[:allow_blank]
    end

    def default_value
      options[:default].is_a?(Proc) ? options[:default] : cast(options[:default])
    end

    def cast(obj)
      return nil if obj.nil? && nil_allowed? || (obj == '' && blank_allowed?)
      cast_type obj
    end

    def cast_type(obj)
      raise NotImplementedError
    end
  end
end

Version data entries

68 entries across 68 versions & 1 rubygems

Version Path
acfs-0.42.0 lib/acfs/model/attributes/base.rb
acfs-0.41.1 lib/acfs/model/attributes/base.rb
acfs-0.41.1.beta1 lib/acfs/model/attributes/base.rb
acfs-0.41.0 lib/acfs/model/attributes/base.rb
acfs-0.40.1.rc1 lib/acfs/model/attributes/base.rb
acfs-0.40.0 lib/acfs/model/attributes/base.rb
acfs-0.39.1 lib/acfs/model/attributes/base.rb
acfs-0.39.0 lib/acfs/model/attributes/base.rb
acfs-0.38.0 lib/acfs/model/attributes/base.rb
acfs-0.37.0.1.b295 lib/acfs/model/attributes/base.rb
acfs-0.37.0 lib/acfs/model/attributes/base.rb
acfs-0.36.0.1.b293 lib/acfs/model/attributes/base.rb
acfs-0.36.0 lib/acfs/model/attributes/base.rb
acfs-0.35.0.1.b291 lib/acfs/model/attributes/base.rb
acfs-0.35.0 lib/acfs/model/attributes/base.rb
acfs-0.34.1.1.b289 lib/acfs/model/attributes/base.rb
acfs-0.34.1 lib/acfs/model/attributes/base.rb
acfs-0.34.0.1.b288 lib/acfs/model/attributes/base.rb
acfs-0.34.0.1.b287 lib/acfs/model/attributes/base.rb
acfs-0.34.0.1.b286 lib/acfs/model/attributes/base.rb