Class: Gem::Resolver::IndexSpecification

Inherits:
Specification show all
Defined in:
lib/rubygems/resolver/index_specification.rb

Overview

Represents a possible Specification object returned from IndexSet. Used to delay needed to download full Specification objects when only the name and version are needed.

Instance Attribute Summary

Attributes inherited from Specification

#name, #platform, #set, #source, #version

Instance Method Summary collapse

Methods inherited from Specification

#download, #fetch_development_dependencies, #full_name, #install, #installable_platform?, #local?

Constructor Details

#initialize(set, name, version, source, platform) ⇒ IndexSpecification

An IndexSpecification is created from the index format described in ‘gem help generate_index`.

The set contains other specifications for this (URL) source.

The name, version and platform are the name, version and platform of the gem.



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rubygems/resolver/index_specification.rb', line 17

def initialize(set, name, version, source, platform)
  super()

  @set = set
  @name = name
  @version = version
  @source = source
  @platform = platform.to_s

  @spec = nil
end

Instance Method Details

#==(other) ⇒ Object



51
52
53
54
55
56
# File 'lib/rubygems/resolver/index_specification.rb', line 51

def ==(other)
  self.class === other &&
    @name == other.name &&
    @version == other.version &&
    @platform == other.platform
end

#dependenciesObject

The dependencies of the gem for this specification



32
33
34
# File 'lib/rubygems/resolver/index_specification.rb', line 32

def dependencies
  spec.dependencies
end

#hashObject



58
59
60
# File 'lib/rubygems/resolver/index_specification.rb', line 58

def hash
  @name.hash ^ @version.hash ^ @platform.hash
end

#inspectObject

:nodoc:



62
63
64
# File 'lib/rubygems/resolver/index_specification.rb', line 62

def inspect # :nodoc:
  '#<%s %s source %s>' % [self.class, full_name, @source]
end

#pretty_print(q) ⇒ Object

:nodoc:



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/rubygems/resolver/index_specification.rb', line 66

def pretty_print(q) # :nodoc:
  q.group 2, '[Index specification', ']' do
    q.breakable
    q.text full_name

    unless Gem::Platform::RUBY == @platform
      q.breakable
      q.text @platform.to_s
    end

    q.breakable
    q.text 'source '
    q.pp @source
  end
end

#required_ruby_versionObject

The required_ruby_version constraint for this specification



39
40
41
# File 'lib/rubygems/resolver/index_specification.rb', line 39

def required_ruby_version
  spec.required_ruby_version
end

#required_rubygems_versionObject

The required_rubygems_version constraint for this specification



47
48
49
# File 'lib/rubygems/resolver/index_specification.rb', line 47

def required_rubygems_version
  spec.required_rubygems_version
end

#specObject

Fetches a Gem::Specification for this IndexSpecification from the #source.



85
86
87
88
89
90
91
92
# File 'lib/rubygems/resolver/index_specification.rb', line 85

def spec # :nodoc:
  @spec ||=
    begin
      tuple = Gem::NameTuple.new @name, @version, @platform

      @source.fetch_spec tuple
    end
end