123456789_123456789_123456789_123456789_123456789_

Class: Bundler::Resolver::SpecGroup

Relationships & Source Files
Inherits: Object
Defined in: lib/bundler/resolver/spec_group.rb

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(specs) ⇒ SpecGroup

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 8

def initialize(specs)
  @specs = specs
end

Instance Attribute Details

#empty?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 12

def empty?
  @specs.empty?
end

#specs (readonly)

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 6

attr_reader :specs

Instance Method Details

#==(other)

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 47

def ==(other)
  sorted_spec_names == other.sorted_spec_names
end

#__dependencies(spec) (private)

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 75

def __dependencies(spec)
  dependencies = []
  spec.dependencies.each do |dep|
    next if dep.type == :development
    dependencies << Dependency.new(dep.name, dep.requirement)
  end
  dependencies
end

#dependencies

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 41

def dependencies
  @dependencies ||= @specs.flat_map do |spec|
    __dependencies(spec) + (spec)
  end.uniq.sort
end

#equivalent?(other) ⇒ Boolean (private)

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 67

def equivalent?(other)
  name == other.name && version == other.version && source == other.source && dependencies == other.dependencies
end

#exemplary_spec (private)

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 71

def exemplary_spec
  @specs.first
end

#merge(other)

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 51

def merge(other)
  return false unless equivalent?(other)

  @specs |= other.specs

  true
end

#metadata_dependencies(spec) (private)

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 84

def (spec)
  [
    ("Ruby", spec.required_ruby_version),
    ("RubyGems", spec.required_rubygems_version),
  ].compact
end

#metadata_dependency(name, requirement) (private)

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 91

def (name, requirement)
  return if requirement.nil? || requirement.none?

  Dependency.new("#{name}\0", requirement)
end

#name

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 16

def name
  @name ||= exemplary_spec.name
end

#sorted_spec_names (protected)

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 61

def sorted_spec_names
  @specs.map(&:full_name).sort
end

#source

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 24

def source
  @source ||= exemplary_spec.source
end

#to_s

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 37

def to_s
  sorted_spec_names.join(", ")
end

#to_specs(force_ruby_platform, most_specific_locked_platform)

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 28

def to_specs(force_ruby_platform, most_specific_locked_platform)
  @specs.map do |s|
    lazy_spec = LazySpecification.from_spec(s)
    lazy_spec.force_ruby_platform = force_ruby_platform
    lazy_spec.most_specific_locked_platform = most_specific_locked_platform
    lazy_spec
  end
end

#version

[ GitHub ]

  
# File 'lib/bundler/resolver/spec_group.rb', line 20

def version
  @version ||= exemplary_spec.version
end