lib/map.rb in map-4.6.1 vs lib/map.rb in map-4.7.0

- old
+ new

@@ -1,7 +1,7 @@ class Map < Hash - Version = '4.6.1' unless defined?(Version) + Version = '4.7.0' unless defined?(Version) Load = Kernel.method(:load) unless defined?(Load) class << Map def version Map::Version @@ -277,14 +277,10 @@ def convert(key, val) [convert_key(key), convert_value(val)] end -# maps are aggressive with copy operations. they are all deep copies. make a -# new one if you really want a shallow copy -# -# TODO - fallback to shallow if objects cannot be marshal'd.... def copy default = self.default self.default = nil copy = Marshal.load(Marshal.dump(self)) rescue Dup.bind(self).call() copy.default = default @@ -303,9 +299,13 @@ copy end def default(key = nil) key.is_a?(Symbol) && include?(key = key.to_s) ? self[key] : super + end + + def default=(value) + raise ArgumentError.new("Map doesn't work so well with a non-nil default value!") unless value.nil? end # writer/reader methods # alias_method '__set__', '[]=' unless method_defined?('__set__')