Sha256: b3e24a5be4ce77db66c2e5ed90501dcb9705866b9f6e90b07b83e36042a21615
Contents?: true
Size: 786 Bytes
Versions: 11
Compression:
Stored size: 786 Bytes
Contents
# frozen_string_literal: true require_relative 'lookups/base' require_relative 'lookups/name' require_relative 'lookups/object' module Coactive class Lookup class << self class_attribute :lookups self.lookups = [Lookups::Name, Lookups::Object] class_attribute :cache self.cache = {} def call(klass, coactant) with_cache(klass, coactant) do lookup = lookups.detect { |lookup| lookup.callable?(coactant) } lookup.new(klass, coactant).call if lookup end end private def with_cache(klass, coactant) if klass.coactive_config.use_cache self.cache[klass] ||= {} self.cache[klass][coactant] ||= yield else yield end end end end end
Version data entries
11 entries across 11 versions & 1 rubygems