Module: Gem::Resolver::Molinillo::SpecificationProvider (Ruby 2.3.4)

In Files

  • rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb

Class/Module Index [+]

Quicksearch

Gem::Resolver::Molinillo::SpecificationProvider

Provides information about specifcations and dependencies to the resolver, allowing the {Resolver} class to remain generic while still providing power and flexibility.

This module contains the methods that users of Gem::Resolver::Molinillo must to implement, using knowledge of their own model classes.

Public Instance Methods

allow_missing?(dependency)

Returns whether this dependency, which has no possible matching specifications, can safely be ignored.

@param [Object] dependency @return [Boolean] whether this dependency can safely be skipped.

 
               # File rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb, line 96
def allow_missing?(dependency)
  false
end
            
dependencies_for(specification)

Returns the dependencies of `specification`. @note This method should be ‘pure’, i.e. the return value should depend

only on the `specification` parameter.

@param [Object] specification @return [Array<Object>] the dependencies that are required by the given

`specification`.
 
               # File rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb, line 30
def dependencies_for(specification)
  []
end
            
name_for(dependency)

Returns the name for the given `dependency`. @note This method should be ‘pure’, i.e. the return value should depend

only on the `dependency` parameter.

@param [Object] dependency @return [String] the name for the given `dependency`.

 
               # File rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb, line 53
def name_for(dependency)
  dependency.to_s
end
            
name_for_explicit_dependency_source()

@return [String] the name of the source of explicit dependencies, i.e.

those passed to {Resolver#resolve} directly.
 
               # File rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb, line 59
def name_for_explicit_dependency_source
  'user-specified dependency'
end
            
name_for_locking_dependency_source()

@return [String] the name of the source of ‘locked’ dependencies, i.e.

those passed to {Resolver#resolve} directly as the `base`
 
               # File rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb, line 65
def name_for_locking_dependency_source
  'Lockfile'
end
            
requirement_satisfied_by?(requirement, activated, spec)

Determines whether the given `requirement` is satisfied by the given `spec`, in the context of the current `activated` dependency graph.

@param [Object] requirement @param [DependencyGraph] activated the current dependency graph in the

resolution process.

@param [Object] spec @return [Boolean] whether `requirement` is satisfied by `spec` in the

context of the current `activated` dependency graph.
 
               # File rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb, line 43
def requirement_satisfied_by?(requirement, activated, spec)
  true
end
            
search_for(dependency)

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. @note This method should be ‘pure’, i.e. the return value should depend

only on the `dependency` parameter.

@param [Object] dependency @return [Array<Object>] the specifications that satisfy the given

`dependency`.
 
               # File rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb, line 19
def search_for(dependency)
  []
end
            
sort_dependencies(dependencies, activated, conflicts)

Sort dependencies so that the ones that are easiest to resolve are first. Easiest to resolve is (usually) defined by:

1) Is this dependency already activated?
2) How relaxed are the requirements?
3) Are there any conflicts for this dependency?
4) How many possibilities are there to satisfy this dependency?

@param [Array<Object>] dependencies @param [DependencyGraph] activated the current dependency graph in the

resolution process.

@param [{String => Array<Conflict>}] conflicts @return [Array<Object>] a sorted copy of `dependencies`.

 
               # File rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb, line 81
def sort_dependencies(dependencies, activated, conflicts)
  dependencies.sort_by do |dependency|
    name = name_for(dependency)
    [
      activated.vertex_named(name).payload ? 0 : 1,
      conflicts[name] ? 0 : 1,
    ]
  end
end