Class: Gem::Resolver::APISpecification
- Inherits:
-
Specification
- Object
- Specification
- Gem::Resolver::APISpecification
- Defined in:
- lib/rubygems/resolver/api_specification.rb
Overview
Represents a specification retrieved via the rubygems.org API.
This is used to avoid loading the full Specification object when all we need is the name, version, and dependencies.
Instance Attribute Summary
Attributes inherited from Specification
#dependencies, #name, #platform, #set, #version
Instance Method Summary collapse
-
#==(other) ⇒ Object
:nodoc:.
-
#fetch_development_dependencies ⇒ Object
:nodoc:.
-
#initialize(set, api_data) ⇒ APISpecification
constructor
Creates an APISpecification for the given
set
from the rubygems.orgapi_data
. -
#installable_platform? ⇒ Boolean
:nodoc:.
-
#pretty_print(q) ⇒ Object
:nodoc:.
-
#source ⇒ Object
:nodoc:.
-
#spec ⇒ Object
Fetches a Gem::Specification for this APISpecification.
Methods inherited from Specification
Constructor Details
#initialize(set, api_data) ⇒ APISpecification
Creates an APISpecification for the given set
from the rubygems.org api_data
.
See guides.rubygems.org/rubygems-org-api/#misc_methods for the format of the api_data
.
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/rubygems/resolver/api_specification.rb', line 16 def initialize(set, api_data) super() @set = set @name = api_data[:name] @version = Gem::Version.new api_data[:number] @platform = Gem::Platform.new api_data[:platform] @dependencies = api_data[:dependencies].map do |name, ver| Gem::Dependency.new name, ver.split(/\s*,\s*/) end end |
Instance Method Details
#==(other) ⇒ Object
:nodoc:
28 29 30 31 32 33 34 35 |
# File 'lib/rubygems/resolver/api_specification.rb', line 28 def == other # :nodoc: self.class === other and @set == other.set and @name == other.name and @version == other.version and @platform == other.platform and @dependencies == other.dependencies end |
#fetch_development_dependencies ⇒ Object
:nodoc:
37 38 39 40 41 |
# File 'lib/rubygems/resolver/api_specification.rb', line 37 def fetch_development_dependencies # :nodoc: spec = source.fetch_spec Gem::NameTuple.new @name, @version, @platform @dependencies = spec.dependencies end |
#installable_platform? ⇒ Boolean
:nodoc:
43 44 45 |
# File 'lib/rubygems/resolver/api_specification.rb', line 43 def installable_platform? # :nodoc: Gem::Platform.match @platform end |
#pretty_print(q) ⇒ Object
:nodoc:
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/rubygems/resolver/api_specification.rb', line 47 def pretty_print q # :nodoc: q.group 2, '[APISpecification', ']' do q.breakable q.text "name: #{name}" q.breakable q.text "version: #{version}" q.breakable q.text "platform: #{platform}" q.breakable q.text 'dependencies:' q.breakable q.pp @dependencies q.breakable q.text "set uri: #{@set.dep_uri}" end end |
#source ⇒ Object
:nodoc:
80 81 82 |
# File 'lib/rubygems/resolver/api_specification.rb', line 80 def source # :nodoc: @set.source end |