Sha256: e4eafd49296274fa79b293eea54758296c12de6e28ec049015ddf0e860328a2b

Contents?: true

Size: 1.14 KB

Versions: 10

Compression:

Stored size: 1.14 KB

Contents

require 'scorpion/dependency'

module Scorpion
  class Dependency
    class CapturedDependency < Scorpion::Dependency
      extend Forwardable

      # ============================================================================
      # @!group Attributes
      #

      # @!attribute
      # @return [Object] the instance that was captured.
        attr_reader :instance

      # @!attribute
      # @return [Scorpion::Dependency] the actual dependency to hunt. Used to fetch the
      #   single {#instance}.
        attr_reader :specific_dependency
        private :specific_dependency


      delegate [:contract,:traits,:satisfies?] => :specific_dependency

      #
      # @!endgroup Attributes

      def initialize( specific_dependency )
        @specific_dependency = specific_dependency
      end

      # @see Dependency#fetch
      def fetch( hunt )
        @instance ||= specific_dependency.fetch( hunt )
      end

      # @see Dependency#release
      def release
        @instance = nil
      end

      # @see Dependency#replicate
      def replicate
        dup.tap do |replica|
          replica.release
        end
      end

    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
scorpion-ioc-0.6.2 lib/scorpion/dependency/captured_dependency.rb
scorpion-ioc-0.6.1 lib/scorpion/dependency/captured_dependency.rb
scorpion-ioc-0.6.0 lib/scorpion/dependency/captured_dependency.rb
scorpion-ioc-0.5.23 lib/scorpion/dependency/captured_dependency.rb
scorpion-ioc-0.5.22 lib/scorpion/dependency/captured_dependency.rb
scorpion-ioc-0.5.21 lib/scorpion/dependency/captured_dependency.rb
scorpion-ioc-0.5.20 lib/scorpion/dependency/captured_dependency.rb
scorpion-ioc-0.5.19 lib/scorpion/dependency/captured_dependency.rb
scorpion-ioc-0.5.18 lib/scorpion/dependency/captured_dependency.rb
scorpion-ioc-0.5.17 lib/scorpion/dependency/captured_dependency.rb