Sha256: f95aba366b9e4f52680beb849391b900f3fe063afcebcc7c33efcb10f4c382c4

Contents?: true

Size: 484 Bytes

Versions: 1

Compression:

Stored size: 484 Bytes

Contents

require 'active_support/core_ext/date_time/conversions'
require 'active_support/core_ext/time/conversions'

module Recliner
  class Property < Struct.new(:name, :type, :as, :default)
    def default_value(instance)
      if default.respond_to?(:call)
        default.arity == 1 ? default.call(instance) : default.call
      else
        default.duplicable? ? default.dup : default
      end
    end
  
    def type_cast(value)
      Conversions.convert(value, type)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
recliner-0.0.1 lib/recliner/properties/property.rb