Class: Gem::Resolver::IndexSet

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

Overview

The global rubygems pool represented via the traditional source index.

Instance Method Summary collapse

Methods inherited from Set

#prefetch

Constructor Details

#initialize(source = nil) ⇒ IndexSet

:nodoc:



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rubygems/resolver/index_set.rb', line 7

def initialize source = nil # :nodoc:
  @f =
    if source then
      sources = Gem::SourceList.from [source]

      Gem::SpecFetcher.new sources
    else
      Gem::SpecFetcher.fetcher
    end

  @all = Hash.new { |h,k| h[k] = [] }

  list, = @f.available_specs :released

  list.each do |uri, specs|
    specs.each do |n|
      @all[n.name] << [uri, n]
    end
  end

  @specs = {}
end

Instance Method Details

#find_all(req) ⇒ Object

Return an array of IndexSpecification objects matching DependencyRequest req.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/rubygems/resolver/index_set.rb', line 34

def find_all req
  res = []

  name = req.dependency.name

  @all[name].each do |uri, n|
    if req.dependency.match? n then
      res << Gem::Resolver::IndexSpecification.new(
        self, n.name, n.version, uri, n.platform)
    end
  end

  res
end

#pretty_print(q) ⇒ Object

:nodoc:



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/rubygems/resolver/index_set.rb', line 49

def pretty_print q # :nodoc:
  q.group 2, '[IndexSet', ']' do
    q.breakable
    q.text 'sources:'
    q.breakable
    q.pp @f.sources

    q.breakable
    q.text 'specs:'

    q.breakable

    names = @all.values.map do |tuples|
      tuples.map do |_, tuple|
        tuple.full_name
      end
    end.flatten

    q.seplist names do |name|
      q.text name
    end
  end
end