Class: Gem::Resolver::LockSet

Inherits:
Set
  • Object
show all
Defined in:
lib/rubygems/resolver/lock_set.rb

Overview

A set of gems from a gem dependencies lockfile.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Set

#prefetch

Constructor Details

#initialize(source) ⇒ LockSet

Creates a new LockSet from the given source



11
12
13
14
# File 'lib/rubygems/resolver/lock_set.rb', line 11

def initialize source
  @source = Gem::Source::Lock.new source
  @specs  = []
end

Instance Attribute Details

#specsObject (readonly)

:nodoc:



6
7
8
# File 'lib/rubygems/resolver/lock_set.rb', line 6

def specs
  @specs
end

Instance Method Details

#add(name, version, platform) ⇒ Object

Creates a new IndexSpecification in this set using the given name, version and platform.

The specification’s set will be the current set, and the source will be the current set’s source.



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/rubygems/resolver/lock_set.rb', line 23

def add name, version, platform # :nodoc:
  version = Gem::Version.new version

  spec =
    Gem::Resolver::LockSpecification.new self, name, version, @source,
                                         platform

  @specs << spec

  spec
end

#find_all(req) ⇒ Object

Returns an Array of IndexSpecification objects matching the DependencyRequest req.



39
40
41
42
43
# File 'lib/rubygems/resolver/lock_set.rb', line 39

def find_all req
  @specs.select do |spec|
    req.matches_spec? spec
  end
end

#load_spec(name, version, platform, source) ⇒ Object

Loads a Gem::Specification with the given name, version and platform. source is ignored.



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/rubygems/resolver/lock_set.rb', line 49

def load_spec name, version, platform, source # :nodoc:
  dep = Gem::Dependency.new name, version

  found = @specs.find do |spec|
    dep.matches_spec? spec and spec.platform == platform
  end

  tuple = Gem::NameTuple.new found.name, found.version, found.platform

  found.source.fetch_spec tuple
end

#pretty_print(q) ⇒ Object

:nodoc:



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/rubygems/resolver/lock_set.rb', line 61

def pretty_print q # :nodoc:
  q.group 2, '[LockSet', ']' do
    q.breakable
    q.text 'source:'

    q.breakable
    q.pp @source

    q.breakable
    q.text 'specs:'

    q.breakable
    q.pp @specs.map { |spec| spec.full_name }
  end
end