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 Attribute Summary

Attributes inherited from Set

#errors, #prerelease, #remote

Instance Method Summary collapse

Methods inherited from Set

#prefetch, #remote?

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
29
30
31
32
# File 'lib/rubygems/resolver/index_set.rb', line 7

def initialize(source = nil) # :nodoc:
  super()

  @f =
    if source
      sources = Gem::SourceList.from [source]

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

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

  list, errors = @f.available_specs :complete

  @errors.concat errors

  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.


38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/rubygems/resolver/index_set.rb', line 38

def find_all(req)
  res = []

  return res unless @remote

  name = req.dependency.name

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

  res
end

#pretty_print(q) ⇒ Object

:nodoc:


55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/rubygems/resolver/index_set.rb', line 55

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