Class Hashery::CRUDHash
In: lib/hashery/crud_hash.rb
Parent: ::Hash

The CRUDHash is essentailly the same as the Hash class, but it reduces the the set of necessary methods to the fundametal CRUD requirements. All other methods route through these CRUD methods. This is a better general design, although it is, of course, a little bit slower. The utility of this class becomes appearent when subclassing or delegating, as only a handful of methods need to be changed for all other methods to work accordingly.

In addition to the CRUD features, CRUDHash supports a `key_proc`, akin to `default_proc`, that can be used to normalize keys.

The CRUD methods are:

In addition to these main methods, there are these supporting "CRUD" methods:

Methods

<<   []   []   []=   auto   default_proc   delete   each   each_pair   fetch   has_key?   include?   key?   key_proc   key_proc=   member?   merge   merge!   read   replace   retrieve   store   to_h   to_hash   update   values_at  

Constants

NA = Object.new   Dummy object for null arguments.

Public Class methods

This method is overridden to ensure that new entries pass through the `store` method.

hash - [each] Single Hash, associative array or just a list of pairs.

Alternate to new which auto-creates sub-dictionaries as needed. By default the `default_proc` procuced a empty Hash and is self-referential so every such Hash also has the same `default_proc`.

args - Pass-thru arguments to `new`. block - Alternate internal procedure for default proc.

Examples

  d = CRUDHash.auto
  d["a"]["b"]["c"] = "abc"  #=> { "a"=>{"b"=>{"c"=>"abc"}}}

Returns `Hash`.

Public Instance methods

Update Hash with assoc.

assoc - Two-element `Array` or a `Hash`.

Returns assoc.

Operator for `retrieve`.

key - Index key to lookup.

Returns `Object` value of key.

Operator for `store`.

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

Returns value.

Allow `default_proc` to take a block.

block - The `Proc` object to set the `default_proc`.

Returns `Proc`, the `default_proc`.

CRUD method for delete.

key - Hash key to remove.

Returns value of deleted Hash entry.

Iterate over each hash pair.

each_pair(

Alias for each

CRUD method for read. This method gets the value for a given key. An error is raised if the key is not present, but an optional argument can be provided to be returned instead.

key - Hash key to lookup. default - Value to return if key is not present.

Raises KeyError when key is not found and default has not been given.

Returns the `Object` that is the Hash entry‘s value.

has_key?(key)

Alias for key?

include?(key)

Alias for key?

CRUD method for checking if key exists.

key - Hash key to lookup.

Returns `true/false`.

Get/set `key_proc`.

Examples

  ch = CRUDHash.new
  ch.key_proc

Returns `Proc`.

Set `key_proc`.

Examples

  ch = CRUDHash.new
  ch.key_proc = Proc.new{ |key| key.to_sym }

Returns `Proc`.

member?(key)

Alias for key?

Merge the Hash with another hash, returning a new Hash.

other - Other hash or hash-like object to add to the hash.

Returns `Hash`.

merge!(other)

Alias for update

Method for reading value. Returns `nil` if key is not present.

Note that this method used to be the CRUD method instead of retrieve. Complaints about read being indicative of an IO object (though in my opinion that is a bad asumption) have led to this method‘s deprecation.

key - Hash key to lookup.

Returns value of Hash entry.

Replace current entries with those from another Hash, or Hash-like object. Each entry is run through the casting procedure as it is added.

other - Hash-like object.

Returns self.

Like fetch but returns the results of calling `default_proc`, if defined, otherwise `default`.

key - Hash key to lookup.

Returns value of Hash entry or `nil`.

CRUD method for create and update.

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

Returns value.

to_h()

Alias for to_hash

Convert CRUDHash to regular Hash.

TODO: Since a CRUDHash is a subclass of Hash should to_hash just `dup`

      insted of converting to traditional Hash?

Update the Hash with another hash.

other - Other hash or hash-like object to add to the hash.

Returns self.

Get the values at.

keys - List of keys to lookup.

Returns `Array` of values.

[Validate]