lib/map.rb in map-2.9.1 vs lib/map.rb in map-3.0.0
- old
+ new
@@ -1,7 +1,7 @@
class Map < Hash
- Version = '2.9.1' unless defined?(Version)
+ Version = '3.0.0' unless defined?(Version)
Load = Kernel.method(:load) unless defined?(Load)
class << Map
def version
Map::Version
@@ -61,32 +61,44 @@
type_names = map_like.map do |ancestor|
name = ancestor.name.to_s.strip
next if name.empty?
name.downcase.gsub(/::/, '_')
end.compact
- type_names.map{|type_name| "to_#{ type_name }"}
+ list = type_names.map{|type_name| "to_#{ type_name }"}
+ list.each{|method| define_conversion_method!(method)}
+ list
)
end
- def add_conversion_method!(method)
+ def define_conversion_method!(method)
method = method.to_s.strip
raise ArguementError if method.empty?
module_eval(<<-__, __FILE__, __LINE__)
unless public_method_defined?(#{ method.inspect })
def #{ method }
self
end
+ true
+ else
+ false
end
- unless conversion_methods.include?(#{ method.inspect })
- conversion_methods.unshift(#{ method.inspect })
- end
__
end
- def inherited(other)
- other.module_eval(&Dynamic)
- super
+ def add_conversion_method!(method)
+ if define_conversion_method!(method)
+ method = method.to_s.strip
+ raise ArguementError if method.empty?
+ module_eval(<<-__, __FILE__, __LINE__)
+ unless conversion_methods.include?(#{ method.inspect })
+ conversion_methods.unshift(#{ method.inspect })
+ end
+ __
+ true
+ else
+ false
+ end
end
# iterate over arguments in pairs smartly.
#
def each_pair(*args, &block)
@@ -155,19 +167,9 @@
def match(haystack, needle)
intersection(haystack, needle) == needle
end
end
-
- unless defined?(Dynamic)
- Dynamic = lambda do
- conversion_methods.reverse_each do |method|
- add_conversion_method!(method)
- end
- end
- module_eval(&Dynamic)
- end
-
# instance constructor
#
def keys
@keys ||= []