Class Hashery::PropertyHash
In: lib/hashery/property_hash.rb
Parent: CRUDHash

A PropertyHash is the same as a regular Hash except it strictly limits the allowed keys.

There are two ways to use it.

1) As an object in itself.

  h = PropertyHash.new(:a=>1, :b=>2)
  h[:a]        #=> 1
  h[:a] = 3
  h[:a]        #=> 3

But if we try to set key that was not fixed, then we will get an error.

  h[:x] = 5    #=> ArgumentError

2) As a superclass.

  class MyPropertyHash < PropertyHash
    property :a, :default => 1
    property :b, :default => 2
  end

  h = MyPropertyHash.new
  h[:a]        #=> 1
  h[:a] = 3
  h[:a]        #=> 3

Again, if we try to set key that was not fixed, then we will get an error.

  h[:x] = 5    #=> ArgumentError

Methods

new   properties   property   property   store  

External Aliases

store -> store!
  Alias original store method and make private.

Public Class methods

Initialize new instance of PropertyHash.

properties - [Hash] Priming properties with default values, or

               if it doesn't respond to #each_pair, a default object.

default_proc - [Proc] Procedure for default value of properties

               for properties without specific defaults.

Get a list of properties with default values.

Returns [Hash] of properties and their default values.

Define a property.

key - Name of property. opts - Property options.

       :default - Default value of property.

Returns default value.

Public Instance methods

Create a new property, on-the-fly.

key - Name of property. opts - Property options.

       :default - Default value of property.

Returns default value.

Store key value pair, ensuring the key is a valid property first.

key - The `Object` to act as indexing key. value - The `Object` to associate with key.

Raises ArgumentError if key is not a valid property.

Returns value.

[Validate]