Sha256: 5e8361a95989b9514c971016da652b513f76d61ab51a5c5ab2dac97fd56b0f7b

Contents?: true

Size: 745 Bytes

Versions: 6

Compression:

Stored size: 745 Bytes

Contents

module Hashme
  class Property

    attr_reader :name, :type, :default, :array

    def initialize(name, type, opts = {})
      @name = name.to_sym

      # Always set type to base type
      if type.is_a?(Array) && !type.first.nil?
        @array = true
        @type = type.first
      else
        @array = false
        @type = type
      end

      # Handle options
      @default = opts[:default]
    end

    def to_s
      name.to_s
    end

    def to_sym
      name
    end

    # Build a new object of the type defined by the property.
    def build(owner, value)
      if array && value.is_a?(Array)
        CastedArray.new(self, owner, value)
      else
        PropertyCasting.cast(self, owner, value)
      end
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
hashme-0.2.5 lib/hashme/property.rb
hashme-0.2.4 lib/hashme/property.rb
hashme-0.2.3 lib/hashme/property.rb
hashme-0.2.2 lib/hashme/property.rb
hashme-0.2.1 lib/hashme/property.rb
hashme-0.2.0 lib/hashme/property.rb