Build::DependencySourceBuildDependencyPartialChain

class PartialChain

A partial dependency chain that resolves only a subset of dependencies.

Definitions

def self.expand(*args)

An UnresolvedDependencyError will be thrown if there are any unresolved dependencies.

Implementation

def self.expand(*args)
	chain = self.new(*args)
	
	chain.freeze
	
	return chain
end

def initialize(chain, dependencies)

Initialize a partial chain.

Signature

parameter chain Chain

The parent chain to use for resolution.

parameter dependencies Array<Depends>

The dependencies to resolve.

Implementation

def initialize(chain, dependencies)
	super()
	
	@chain = chain
	
	@dependencies = dependencies.collect{|dependency| Depends[dependency]}
	
	expand_top
end

def selection

Get the selection from the parent chain.

Signature

returns Set<String>

The explicitly selected dependencies.

Implementation

def selection
	@chain.selection
end

attr :dependencies

def providers

Get the providers from the parent chain.

Signature

returns Array<Provider>

The available providers.

Implementation

def providers
	@chain.providers
end

def freeze

Freeze the partial chain.

Implementation

def freeze
	return self if frozen?
	
	@chain.freeze
	@dependencies.freeze
	
	super
end