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__')