Module: Gem::Resolver::Molinillo::Delegates::SpecificationProvider
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Defined in: | lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb |
Overview
::Gem::Resolver::Molinillo::Delegates
all ::Gem::Resolver::Molinillo::SpecificationProvider
methods to a #specification_provider
property.
Instance Method Summary
-
#allow_missing?(dependency) ⇒ Boolean
Returns whether this dependency, which has no possible matching specifications, can safely be ignored.
-
#dependencies_equal?(dependencies, other_dependencies) ⇒ Boolean
Determines whether two arrays of dependencies are equal, and thus can be grouped.
-
#dependencies_for(specification) ⇒ Array<Object>
Returns the dependencies of
specification
. -
#name_for(dependency) ⇒ String
Returns the name for the given
dependency
. - #name_for_explicit_dependency_source ⇒ String
- #name_for_locking_dependency_source ⇒ String
-
#requirement_satisfied_by?(requirement, activated, spec) ⇒ Boolean
Determines whether the given
requirement
is satisfied by the givenspec
, in the context of the currentactivated
dependency graph. -
#search_for(dependency) ⇒ Array<Object>
Search for the specifications that match the given dependency.
-
#sort_dependencies(dependencies, activated, conflicts) ⇒ Array<Object>
Sort dependencies so that the ones that are easiest to resolve are first.
-
#with_no_such_dependency_error_handling { ... }
private
Ensures any raised
::Gem::Resolver::Molinillo::NoSuchDependencyError
has its NoSuchDependencyError#required_by set.
Instance Method Details
#allow_missing?(dependency) ⇒ Boolean
Returns whether this dependency, which has no possible matching specifications, can safely be ignored.
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb', line 65
def allow_missing?(dependency) with_no_such_dependency_error_handling do specification_provider.allow_missing?(dependency) end end
#dependencies_equal?(dependencies, other_dependencies) ⇒ Boolean
Determines whether two arrays of dependencies are equal, and thus can be grouped.
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb', line 30
def dependencies_equal?(dependencies, other_dependencies) with_no_such_dependency_error_handling do specification_provider.dependencies_equal?(dependencies, other_dependencies) end end
#dependencies_for(specification) ⇒ Array
<Object
>
This method should be ‘pure’, i.e. the return value should depend only on the specification
parameter.
Returns the dependencies of specification
.
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb', line 16
def dependencies_for(specification) with_no_such_dependency_error_handling do specification_provider.dependencies_for(specification) end end
#name_for(dependency) ⇒ String
This method should be ‘pure’, i.e. the return value should depend only on the dependency
parameter.
Returns the name for the given dependency
.
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb', line 37
def name_for(dependency) with_no_such_dependency_error_handling do specification_provider.name_for(dependency) end end
#name_for_explicit_dependency_source ⇒ String
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb', line 44
def name_for_explicit_dependency_source with_no_such_dependency_error_handling do specification_provider.name_for_explicit_dependency_source end end
#name_for_locking_dependency_source ⇒ String
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb', line 51
def name_for_locking_dependency_source with_no_such_dependency_error_handling do specification_provider.name_for_locking_dependency_source end end
#requirement_satisfied_by?(requirement, activated, spec) ⇒ Boolean
Determines whether the given requirement
is satisfied by the given spec
, in the context of the current activated
dependency graph.
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb', line 23
def requirement_satisfied_by?(requirement, activated, spec) with_no_such_dependency_error_handling do specification_provider.requirement_satisfied_by?(requirement, activated, spec) end end
#search_for(dependency) ⇒ Array
<Object
>
This method should be ‘pure’, i.e. the return value should depend only on the dependency
parameter.
Search for the specifications that match the given dependency. The specifications in the returned array will be considered in reverse order, so the latest version ought to be last.
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb', line 9
def search_for(dependency) with_no_such_dependency_error_handling do specification_provider.search_for(dependency) end end
#sort_dependencies(dependencies, activated, conflicts) ⇒ Array
<Object
>
Sort dependencies so that the ones that are easiest to resolve are first. Easiest to resolve is (usually) defined by:
-
Is this dependency already activated?
-
How relaxed are the requirements?
-
Are there any conflicts for this dependency?
-
How many possibilities are there to satisfy this dependency?
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb', line 58
def sort_dependencies(dependencies, activated, conflicts) with_no_such_dependency_error_handling do specification_provider.sort_dependencies(dependencies, activated, conflicts) end end
#with_no_such_dependency_error_handling { ... } (private)
Ensures any raised ::Gem::Resolver::Molinillo::NoSuchDependencyError
has its NoSuchDependencyError#required_by set.
# File 'lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb', line 76
def with_no_such_dependency_error_handling yield rescue NoSuchDependencyError => error if state vertex = activated.vertex_named(name_for(error.dependency)) error.required_by += vertex.incoming_edges.map { |e| e.origin.name } error.required_by << name_for_explicit_dependency_source unless vertex.explicit_requirements.empty? end raise end