Last Modified
2012-02-02 12:26:53 +0000
Requires

Description

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