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