lib/hashery/static_hash.rb in hashery-1.5.0 vs lib/hashery/static_hash.rb in hashery-2.0.0

- old
+ new

@@ -1,48 +1,53 @@ -# = StaticHash -# -# A Hash object which raises an error if any -# previously-defined key attempts to be set again. -# -# == Synopsis -# -# foo = StaticHash.new -# foo['name'] = 'Tom' #=> 'Tom' -# foo['age'] = 30 #=> 30 -# foo['name'] = 'Bob' -# -# _produces_ -# -# ArgumentError: Duplicate key for StaticHash -- 'name' -# -# == Credit -# -# StaticHash has it's orgins in Gavin Kistner's WriteOnceHash -# class found in his +basiclibrary.rb+ script. +module Hashery -class StaticHash < Hash + # StaticHash ia a Hash object which raises an error if any + # previously-defined key attempts to be set again. + # + # foo = StaticHash.new + # foo['name'] = 'Tom' #=> 'Tom' + # foo['age'] = 30 #=> 30 + # foo['name'] = 'Bob' + # + # produces + # + # ArgumentError: Duplicate key for StaticHash -- 'name' + # + # StaticHash has it's orgins in Gavin Kistner's WriteOnceHash + # class found in his +basiclibrary.rb+ script. + # + # TODO: Maybe StaticHash isn't bets name for this class? + # + class StaticHash < CRUDHash - # Set a value for a key. Raises an error if that key already - # exists with a different value. - - def []=(key, value) - if key?(key) && self[key] != value - raise ArgumentError, "Duplicate key for StaticHash -- #{key.inspect}" + # + # Set a value for a key. Raises an error if that key already + # exists with a different value. + # + # key - Index key to associate with value. + # value - Value to associate with key. + # + # Retruns value. + # + def store(key, value) + if key?(key) && read(key) != value + raise ArgumentError, "Duplicate key for StaticHash -- #{key.inspect}" + end + super(key, value) end - super(key, value) - end - # - def update(hash) - dups = (keys | hash.keys) - if dups.empty? - super(hash) - else - raise ArgumentError, "Duplicate key for StaticHash -- #{dups.inspect}" - end - end + # + #def update(hash) + # dups = (keys | hash.keys) + # if dups.empty? + # super(hash) + # else + # raise ArgumentError, "Duplicate key for StaticHash -- #{dups.inspect}" + # end + #end - # - alias_method :merge!, :update + # + #alias_method :merge!, :update -end + end +end