Module: Bundler::Molinillo::SpecificationProvider
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
| Included In: | |
| Defined in: | lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb | 
Overview
Provides information about specifications 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 ::Bundler::Molinillo must to implement, using knowledge of their own model classes.
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 requirementis satisfied by the givenspec, in the context of the currentactivateddependency 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. 
Instance Method Details
    #allow_missing?(dependency)  ⇒ Boolean 
  
Returns whether this dependency, which has no possible matching specifications, can safely be ignored.
# File 'lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb', line 108
def allow_missing?(dependency) false end
    #dependencies_equal?(dependencies, other_dependencies)  ⇒ Boolean 
  
Determines whether two arrays of dependencies are equal, and thus can be grouped.
# File 'lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb', line 55
def dependencies_equal?(dependencies, other_dependencies) dependencies == other_dependencies 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/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb', line 31
def dependencies_for(specification) [] 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/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb', line 65
def name_for(dependency) dependency.to_s end
    #name_for_explicit_dependency_source  ⇒ String 
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb', line 71
def name_for_explicit_dependency_source 'user-specified dependency' end
    #name_for_locking_dependency_source  ⇒ String 
  
# File 'lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb', line 77
def name_for_locking_dependency_source 'Lockfile' 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/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb', line 44
def requirement_satisfied_by?(requirement, activated, spec) true 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/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb', line 20
def search_for(dependency) [] 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:
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?# File 'lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb', line 93
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