Class: Gem::Resolver::IndexSpecification
- Inherits:
-
Specification
- Object
- Specification
- Gem::Resolver::IndexSpecification
- 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
- #==(other) ⇒ Object
-
#dependencies ⇒ Object
The dependencies of the gem for this specification.
- #hash ⇒ Object
-
#initialize(set, name, version, source, platform) ⇒ IndexSpecification
constructor
An IndexSpecification is created from the index format described in ‘gem help generate_index`.
-
#inspect ⇒ Object
:nodoc:.
-
#pretty_print(q) ⇒ Object
:nodoc:.
-
#required_ruby_version ⇒ Object
The required_ruby_version constraint for this specification.
-
#required_rubygems_version ⇒ Object
The required_rubygems_version constraint for this specification.
-
#spec ⇒ Object
Fetches a Gem::Specification for this IndexSpecification from the #source.
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.
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/rubygems/resolver/index_specification.rb', line 18 def initialize(set, name, version, source, platform) super() @set = set @name = name @version = version @source = source @platform = Gem::Platform.new(platform.to_s) @original_platform = platform.to_s @spec = nil end |
Instance Method Details
#==(other) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/rubygems/resolver/index_specification.rb', line 59 def ==(other) self.class === other && @name == other.name && @version == other.version && @platform == other.platform end |
#dependencies ⇒ Object
The dependencies of the gem for this specification
34 35 36 |
# File 'lib/rubygems/resolver/index_specification.rb', line 34 def dependencies spec.dependencies end |
#hash ⇒ Object
66 67 68 |
# File 'lib/rubygems/resolver/index_specification.rb', line 66 def hash @name.hash ^ @version.hash ^ @platform.hash end |
#inspect ⇒ Object
:nodoc:
70 71 72 |
# File 'lib/rubygems/resolver/index_specification.rb', line 70 def inspect # :nodoc: format("#<%s %s source %s>", self.class, full_name, @source) end |
#pretty_print(q) ⇒ Object
:nodoc:
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/rubygems/resolver/index_specification.rb', line 74 def pretty_print(q) # :nodoc: q.group 2, "[Index specification", "]" do q.breakable q.text full_name unless @platform == Gem::Platform::RUBY q.breakable q.text @platform.to_s end q.breakable q.text "source " q.pp @source end end |
#required_ruby_version ⇒ Object
The required_ruby_version constraint for this specification
A fallback is included because when generated, some marshalled specs have it set to nil
.
44 45 46 |
# File 'lib/rubygems/resolver/index_specification.rb', line 44 def required_ruby_version spec.required_ruby_version || Gem::Requirement.default end |
#required_rubygems_version ⇒ Object
The required_rubygems_version constraint for this specification
A fallback is included because the original version of the specification API didn’t include that field, so some marshalled specs in the index have it set to nil
.
55 56 57 |
# File 'lib/rubygems/resolver/index_specification.rb', line 55 def required_rubygems_version spec.required_rubygems_version || Gem::Requirement.default end |
#spec ⇒ Object
Fetches a Gem::Specification for this IndexSpecification from the #source.
93 94 95 96 97 98 99 100 |
# File 'lib/rubygems/resolver/index_specification.rb', line 93 def spec # :nodoc: @spec ||= begin tuple = Gem::NameTuple.new @name, @version, @original_platform @source.fetch_spec tuple end end |