Sha256: c815112d9245e9dfd1c7b4f454b31fcf7fbfbeff1f55a8139f46f4e1479f8ca1

Contents?: true

Size: 1018 Bytes

Versions: 6

Compression:

Stored size: 1018 Bytes

Contents

module Tap
  module Support
    
    # Constrains an Executable to only _execute once, and provides several
    # methods making the Executable behave like a Dependency.
    module Dependency
      
      # The audited result of self
      attr_accessor :_result
      
      def self.extended(base) # :nodoc:
        base.instance_variable_set(:@_result, nil)
      end
      
      # Conditional _execute; only calls _method_name if
      # resolved? is false (thus assuring self will only
      # be executed once).
      #
      # Returns _result.
      def _execute(*args)
        app.dependencies.resolve(self) do
          @_result = super
        end unless resolved?
        _result
      end
      
      # Alias for _execute().
      def resolve
        _execute
      end
      
      # True if _result is non-nil.
      def resolved?
        @_result != nil
      end
      
      # Resets the dependency by setting _result to nil.
      def reset
        @_result = nil
      end
      
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
bahuvrihi-tap-0.10.8 lib/tap/support/dependency.rb
bahuvrihi-tap-0.11.0 lib/tap/support/dependency.rb
bahuvrihi-tap-0.11.1 lib/tap/support/dependency.rb
bahuvrihi-tap-0.11.2 lib/tap/support/dependency.rb
tap-0.11.0 lib/tap/support/dependency.rb
tap-0.11.1 lib/tap/support/dependency.rb