Sha256: c7066a4ae1cde2c0f31f98d2c07da258146a6379ab11a2f30542f1e630e0c5ba

Contents?: true

Size: 646 Bytes

Versions: 5

Compression:

Stored size: 646 Bytes

Contents

module Acfs::Resource::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
      if options[:default].is_a? Proc
        options[:default]
      else
        cast options[:default]
      end
    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

5 entries across 5 versions & 1 rubygems

Version Path
acfs-0.45.0 lib/acfs/resource/attributes/base.rb
acfs-0.44.0 lib/acfs/resource/attributes/base.rb
acfs-0.43.2 lib/acfs/resource/attributes/base.rb
acfs-0.43.1 lib/acfs/resource/attributes/base.rb
acfs-0.43.0 lib/acfs/resource/attributes/base.rb