lib/dry/data.rb in dry-data-0.3.2 vs lib/dry/data.rb in dry-data-0.4.0
- old
+ new
@@ -1,11 +1,11 @@
require 'bigdecimal'
require 'date'
require 'set'
require 'inflecto'
-require 'thread_safe/cache'
+require 'thread_safe'
require 'dry-container'
require 'dry-equalizer'
require 'dry/data/version'
@@ -57,20 +57,26 @@
)
end
def self.[](name)
type_map.fetch_or_store(name) do
- result = name.match(TYPE_SPEC_REGEX)
-
type =
- if result
- type_id, member_id = result[1..2]
- container[type_id].member(self[member_id])
- else
- container[name]
+ case name
+ when String
+ result = name.match(TYPE_SPEC_REGEX)
+
+ type =
+ if result
+ type_id, member_id = result[1..2]
+ container[type_id].member(self[member_id])
+ else
+ container[name]
+ end
+ when Class
+ self[identifier(name)]
end
- type_map[name] = type
+ type
end
end
def self.define_constants(namespace, identifiers)
names = identifiers.map do |id|