Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 88
Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 215
Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 216
Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 217
Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 218
Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 219
Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 220
PK ! T"; ;
package.rbnu [ # frozen_string_literal: true
module Bundler
class Resolver
#
# Represents a gem being resolved, in a format PubGrub likes.
#
# The class holds the following information:
#
# * Platforms this gem will be resolved on.
# * The locked version of this gem resolution should favor (if any).
# * Whether the gem should be unlocked to its latest version.
# * The dependency explicit set in the Gemfile for this gem (if any).
#
class Package
attr_reader :name, :platforms, :dependency, :locked_version
def initialize(name, platforms, locked_specs:, unlock:, prerelease: false, prefer_local: false, dependency: nil, new_platforms: [])
@name = name
@platforms = platforms
@locked_version = locked_specs.version_for(name)
@unlock = unlock
@dependency = dependency || Dependency.new(name, @locked_version)
@top_level = !dependency.nil?
@prerelease = @dependency.prerelease? || @locked_version&.prerelease? || prerelease ? :consider_first : :ignore
@prefer_local = prefer_local
@new_platforms = new_platforms
end
def platform_specs(specs)
platforms.map do |platform|
prefer_locked = @new_platforms.include?(platform) ? false : !unlock?
GemHelpers.select_best_platform_match(specs, platform, prefer_locked: prefer_locked)
end
end
def to_s
@name.delete("\0")
end
def root?
false
end
def top_level?
@top_level
end
def meta?
@name.end_with?("\0")
end
def ==(other)
self.class == other.class && @name == other.name
end
def hash
@name.hash
end
def unlock?
@unlock == true || @unlock.include?(name)
end
def ignores_prereleases?
@prerelease == :ignore
end
def prerelease_specified?
@prerelease == :consider_first
end
def consider_prereleases!
@prerelease = :consider_last
end
def prefer_local?
@prefer_local
end
def consider_remote_versions!
@prefer_local = false
end
def force_ruby_platform?
@dependency.force_ruby_platform
end
def current_platform?
@dependency.current_platform?
end
end
end
end
PK !
spec_group.rbnu [ # frozen_string_literal: true
module Bundler
class Resolver
class SpecGroup
attr_reader :specs
def initialize(specs)
@specs = specs
end
def empty?
@specs.empty?
end
def name
@name ||= exemplary_spec.name
end
def version
@version ||= exemplary_spec.version
end
def source
@source ||= exemplary_spec.source
end
def to_specs(force_ruby_platform, most_specific_locked_platform)
@specs.map do |s|
lazy_spec = LazySpecification.from_spec(s)
lazy_spec.force_ruby_platform = force_ruby_platform
lazy_spec.most_specific_locked_platform = most_specific_locked_platform
lazy_spec
end
end
def to_s
sorted_spec_names.join(", ")
end
def dependencies
@dependencies ||= @specs.flat_map(&:expanded_dependencies).uniq.sort
end
def ==(other)
sorted_spec_names == other.sorted_spec_names
end
def merge(other)
return false unless equivalent?(other)
@specs |= other.specs
true
end
protected
def sorted_spec_names
@specs.map(&:full_name).sort
end
private
def equivalent?(other)
name == other.name && version == other.version && source == other.source && dependencies == other.dependencies
end
def exemplary_spec
@specs.first
end
end
end
end
PK ! %( base.rbnu [ # frozen_string_literal: true
require_relative "package"
module Bundler
class Resolver
class Base
attr_reader :packages, :requirements, :source_requirements, :locked_specs
def initialize(source_requirements, dependencies, base, platforms, options)
@source_requirements = source_requirements
@locked_specs = options[:locked_specs]
@base = base
@packages = Hash.new do |hash, name|
hash[name] = Package.new(name, platforms, **options)
end
@requirements = dependencies.filter_map do |dep|
dep_platforms = dep.gem_platforms(platforms)
# Dependencies scoped to external platforms are ignored
next if dep_platforms.empty?
name = dep.name
@packages[name] = Package.new(name, dep_platforms, **options.merge(dependency: dep))
dep
end
end
def [](name)
@base[name]
end
def delete(specs)
@base.delete(specs)
end
def get_package(name)
@packages[name]
end
def base_requirements
@base_requirements ||= build_base_requirements
end
def unlock_names(names)
indirect_pins = indirect_pins(names)
if indirect_pins.any?
loosen_names(indirect_pins)
else
pins = pins(names)
if pins.any?
loosen_names(pins)
else
unrestrict_names(names)
end
end
end
def include_prereleases(names)
names.each do |name|
get_package(name).consider_prereleases!
end
end
def include_remote_specs(names)
names.each do |name|
get_package(name).consider_remote_versions!
end
end
private
def indirect_pins(names)
names.select {|name| @base_requirements[name].exact? && @requirements.none? {|dep| dep.name == name } }
end
def pins(names)
names.select {|name| @base_requirements[name].exact? }
end
def loosen_names(names)
names.each do |name|
version = @base_requirements[name].requirements.first[1]
@base_requirements[name] = Gem::Requirement.new(">= #{version}")
@base.delete_by_name(name)
end
end
def unrestrict_names(names)
names.each do |name|
@base_requirements.delete(name)
end
end
def build_base_requirements
base_requirements = {}
@base.each do |ls|
if ls.source_changed? && ls.source.specs.search(ls.name).empty?
raise GemNotFound, "Could not find gem '#{ls.name}' in #{ls.source}"
end
req = Gem::Requirement.new(ls.version)
base_requirements[ls.name] = req
end
base_requirements
end
end
end
end
PK ! Uߘ root.rbnu [ # frozen_string_literal: true
require_relative "package"
module Bundler
class Resolver
#
# Represents the Gemfile from the resolver's perspective. It's the root
# package and Gemfile entries depend on it.
#
class Root < Package
def initialize(name)
@name = name
end
def meta?
true
end
def root?
true
end
end
end
end
PK ! ) candidate.rbnu [ # frozen_string_literal: true
require_relative "spec_group"
module Bundler
class Resolver
#
# This class is a PubGrub compatible "Version" class that takes Bundler
# resolution complexities into account.
#
# Each Resolver::Candidate has a underlying `Gem::Version` plus a set of
# platforms. For example, 1.1.0-x86_64-linux is a different resolution candidate
# from 1.1.0 (generic). This is because different platform variants of the
# same gem version can bring different dependencies, so they need to be
# considered separately.
#
# Some candidates may also keep some information explicitly about the
# package they refer to. These candidates are referred to as "canonical" and
# are used when materializing resolution results back into RubyGems
# specifications that can be installed, written to lockfiles, and so on.
#
class Candidate
include Comparable
attr_reader :version
def initialize(version, group: nil, priority: -1)
@spec_group = group || SpecGroup.new([])
@version = Gem::Version.new(version)
@priority = priority
end
def dependencies
@spec_group.dependencies
end
def to_specs(package, most_specific_locked_platform)
return [] if package.meta?
@spec_group.to_specs(package.force_ruby_platform?, most_specific_locked_platform)
end
def prerelease?
@version.prerelease?
end
def segments
@version.segments
end
def <=>(other)
return unless other.is_a?(self.class)
version_comparison = version <=> other.version
return version_comparison unless version_comparison.zero?
priority <=> other.priority
end
def ==(other)
return unless other.is_a?(self.class)
version == other.version && priority == other.priority
end
def eql?(other)
return unless other.is_a?(self.class)
version.eql?(other.version) && priority.eql?(other.priority)
end
def hash
[@version, @priority].hash
end
def to_s
@version.to_s
end
protected
attr_reader :priority
end
end
end
PK ! " incompatibility.rbnu [ # frozen_string_literal: true
module Bundler
class Resolver
class Incompatibility < PubGrub::Incompatibility
attr_reader :extended_explanation
def initialize(terms, cause:, custom_explanation: nil, extended_explanation: nil)
@extended_explanation = extended_explanation
super(terms, cause: cause, custom_explanation: custom_explanation)
end
end
end
end
PK ! K# lock_set.rbnu [ # frozen_string_literal: true
##
# A set of gems from a gem dependencies lockfile.
class Gem::Resolver::LockSet < Gem::Resolver::Set
attr_reader :specs # :nodoc:
##
# Creates a new LockSet from the given +sources+
def initialize(sources)
super()
@sources = sources.map do |source|
Gem::Source::Lock.new source
end
@specs = []
end
##
# Creates a new IndexSpecification in this set using the given +name+,
# +version+ and +platform+.
#
# The specification's set will be the current set, and the source will be
# the current set's source.
def add(name, version, platform) # :nodoc:
version = Gem::Version.new version
specs = [
Gem::Resolver::LockSpecification.new(self, name, version, @sources, platform),
]
@specs.concat specs
specs
end
##
# Returns an Array of IndexSpecification objects matching the
# DependencyRequest +req+.
def find_all(req)
@specs.select do |spec|
req.match? spec
end
end
##
# Loads a Gem::Specification with the given +name+, +version+ and
# +platform+. +source+ is ignored.
def load_spec(name, version, platform, source) # :nodoc:
dep = Gem::Dependency.new name, version
found = @specs.find do |spec|
dep.matches_spec? spec and spec.platform == platform
end
tuple = Gem::NameTuple.new found.name, found.version, found.platform
found.source.fetch_spec tuple
end
def pretty_print(q) # :nodoc:
q.group 2, '[LockSet', ']' do
q.breakable
q.text 'source:'
q.breakable
q.pp @source
q.breakable
q.text 'specs:'
q.breakable
q.pp @specs.map {|spec| spec.full_name }
end
end
end
PK ! dependency_request.rbnu [ # frozen_string_literal: true
##
# Used Internally. Wraps a Dependency object to also track which spec
# contained the Dependency.
class Gem::Resolver::DependencyRequest
##
# The wrapped Gem::Dependency
attr_reader :dependency
##
# The request for this dependency.
attr_reader :requester
##
# Creates a new DependencyRequest for +dependency+ from +requester+.
# +requester may be nil if the request came from a user.
def initialize(dependency, requester)
@dependency = dependency
@requester = requester
end
def ==(other) # :nodoc:
case other
when Gem::Dependency
@dependency == other
when Gem::Resolver::DependencyRequest
@dependency == other.dependency
else
false
end
end
##
# Is this dependency a development dependency?
def development?
@dependency.type == :development
end
##
# Does this dependency request match +spec+?
#
# NOTE: #match? only matches prerelease versions when #dependency is a
# prerelease dependency.
def match?(spec, allow_prerelease = false)
@dependency.match? spec, nil, allow_prerelease
end
##
# Does this dependency request match +spec+?
#
# NOTE: #matches_spec? matches prerelease versions. See also #match?
def matches_spec?(spec)
@dependency.matches_spec? spec
end
##
# The name of the gem this dependency request is requesting.
def name
@dependency.name
end
def type
@dependency.type
end
##
# Indicate that the request is for a gem explicitly requested by the user
def explicit?
@requester.nil?
end
##
# Indicate that the request is for a gem requested as a dependency of
# another gem
def implicit?
!explicit?
end
##
# Return a String indicating who caused this request to be added (only
# valid for implicit requests)
def request_context
@requester ? @requester.request : "(unknown)"
end
def pretty_print(q) # :nodoc:
q.group 2, '[Dependency request ', ']' do
q.breakable
q.text @dependency.to_s
q.breakable
q.text ' requested by '
q.pp @requester
end
end
##
# The version requirement for this dependency request
def requirement
@dependency.requirement
end
def to_s # :nodoc:
@dependency.to_s
end
end
PK ! Zɭ% % local_specification.rbnu [ # frozen_string_literal: true
##
# A LocalSpecification comes from a .gem file on the local filesystem.
class Gem::Resolver::LocalSpecification < Gem::Resolver::SpecSpecification
##
# Returns +true+ if this gem is installable for the current platform.
def installable_platform?
return true if @source.kind_of? Gem::Source::SpecificFile
super
end
def local? # :nodoc:
true
end
def pretty_print(q) # :nodoc:
q.group 2, '[LocalSpecification', ']' 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 "source: #{@source.path}"
end
end
end
PK ! y^&
api_specification.rbnu [ # frozen_string_literal: true
##
# 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.
class Gem::Resolver::APISpecification < Gem::Resolver::Specification
##
# We assume that all instances of this class are immutable;
# so avoid duplicated generation for performance.
@@cache = {}
def self.new(set, api_data)
cache_key = [set, api_data]
cache = @@cache[cache_key]
return cache if cache
@@cache[cache_key] = super
end
##
# Creates an APISpecification for the given +set+ from the rubygems.org
# +api_data+.
#
# See https://guides.rubygems.org/rubygems-org-api/#misc_methods for the
# format of the +api_data+.
def initialize(set, api_data)
super()
@set = set
@name = api_data[:name]
@version = Gem::Version.new(api_data[:number]).freeze
@platform = Gem::Platform.new(api_data[:platform]).freeze
@original_platform = api_data[:platform].freeze
@dependencies = api_data[:dependencies].map do |name, ver|
Gem::Dependency.new(name, ver.split(/\s*,\s*/)).freeze
end.freeze
@required_ruby_version = Gem::Requirement.new(api_data.dig(:requirements, :ruby)).freeze
@required_rubygems_version = Gem::Requirement.new(api_data.dig(:requirements, :rubygems)).freeze
end
def ==(other) # :nodoc:
self.class === other and
@set == other.set and
@name == other.name and
@version == other.version and
@platform == other.platform
end
def hash
@set.hash ^ @name.hash ^ @version.hash ^ @platform.hash
end
def fetch_development_dependencies # :nodoc:
spec = source.fetch_spec Gem::NameTuple.new @name, @version, @platform
@dependencies = spec.dependencies
end
def installable_platform? # :nodoc:
Gem::Platform.match_gem? @platform, @name
end
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
##
# Fetches a Gem::Specification for this APISpecification.
def spec # :nodoc:
@spec ||=
begin
tuple = Gem::NameTuple.new @name, @version, @platform
source.fetch_spec tuple
rescue Gem::RemoteFetcher::FetchError
raise if @original_platform == @platform
tuple = Gem::NameTuple.new @name, @version, @original_platform
source.fetch_spec tuple
end
end
def source # :nodoc:
@set.source
end
end
PK ! h:, stats.rbnu [ # frozen_string_literal: true
class Gem::Resolver::Stats
def initialize
@max_depth = 0
@max_requirements = 0
@requirements = 0
@backtracking = 0
@iterations = 0
end
def record_depth(stack)
if stack.size > @max_depth
@max_depth = stack.size
end
end
def record_requirements(reqs)
if reqs.size > @max_requirements
@max_requirements = reqs.size
end
end
def requirement!
@requirements += 1
end
def backtracking!
@backtracking += 1
end
def iteration!
@iterations += 1
end
PATTERN = "%20s: %d\n".freeze
def display
$stdout.puts "=== Resolver Statistics ==="
$stdout.printf PATTERN, "Max Depth", @max_depth
$stdout.printf PATTERN, "Total Requirements", @requirements
$stdout.printf PATTERN, "Max Requirements", @max_requirements
$stdout.printf PATTERN, "Backtracking #", @backtracking
$stdout.printf PATTERN, "Iteration #", @iterations
end
end
PK ! Wk set.rbnu [ # frozen_string_literal: true
##
# Resolver sets are used to look up specifications (and their
# dependencies) used in resolution. This set is abstract.
class Gem::Resolver::Set
##
# Set to true to disable network access for this set
attr_accessor :remote
##
# Errors encountered when resolving gems
attr_accessor :errors
##
# When true, allows matching of requests to prerelease gems.
attr_accessor :prerelease
def initialize # :nodoc:
@prerelease = false
@remote = true
@errors = []
end
##
# The find_all method must be implemented. It returns all Resolver
# Specification objects matching the given DependencyRequest +req+.
def find_all(req)
raise NotImplementedError
end
##
# The #prefetch method may be overridden, but this is not necessary. This
# default implementation does nothing, which is suitable for sets where
# looking up a specification is cheap (such as installed gems).
#
# When overridden, the #prefetch method should look up specifications
# matching +reqs+.
def prefetch(reqs)
end
##
# When true, this set is allowed to access the network when looking up
# specifications or dependencies.
def remote? # :nodoc:
@remote
end
end
PK ! .. . index_specification.rbnu [ # frozen_string_literal: true
##
# 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.
class Gem::Resolver::IndexSpecification < Gem::Resolver::Specification
##
# 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.
def initialize(set, name, version, source, platform)
super()
@set = set
@name = name
@version = version
@source = source
@platform = platform.to_s
@spec = nil
end
##
# The dependencies of the gem for this specification
def dependencies
spec.dependencies
end
##
# The required_ruby_version constraint for this specification
#
# A fallback is included because when generated, some marshalled specs have it
# set to +nil+.
def required_ruby_version
spec.required_ruby_version || Gem::Requirement.default
end
##
# 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+.
def required_rubygems_version
spec.required_rubygems_version || Gem::Requirement.default
end
def ==(other)
self.class === other &&
@name == other.name &&
@version == other.version &&
@platform == other.platform
end
def hash
@name.hash ^ @version.hash ^ @platform.hash
end
def inspect # :nodoc:
'#<%s %s source %s>' % [self.class, full_name, @source]
end
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
##
# Fetches a Gem::Specification for this IndexSpecification from the #source.
def spec # :nodoc:
@spec ||=
begin
tuple = Gem::NameTuple.new @name, @version, @platform
@source.fetch_spec tuple
end
end
end
PK ! h index_set.rbnu [ # frozen_string_literal: true
##
# The global rubygems pool represented via the traditional
# source index.
class Gem::Resolver::IndexSet < Gem::Resolver::Set
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
##
# Return an array of IndexSpecification objects matching
# DependencyRequest +req+.
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
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
end
PK ! iق0 api_set/gem_parser.rbnu [ # frozen_string_literal: true
class Gem::Resolver::APISet::GemParser
def parse(line)
version_and_platform, rest = line.split(" ", 2)
version, platform = version_and_platform.split("-", 2)
dependencies, requirements = rest.split("|", 2).map {|s| s.split(",") } if rest
dependencies = dependencies ? dependencies.map {|d| parse_dependency(d) } : []
requirements = requirements ? requirements.map {|d| parse_dependency(d) } : []
[version, platform, dependencies, requirements]
end
private
def parse_dependency(string)
dependency = string.split(":")
dependency[-1] = dependency[-1].split("&") if dependency.size > 1
dependency
end
end
PK ! WMn activation_request.rbnu [ # frozen_string_literal: true
##
# Specifies a Specification object that should be activated. Also contains a
# dependency that was used to introduce this activation.
class Gem::Resolver::ActivationRequest
##
# The parent request for this activation request.
attr_reader :request
##
# The specification to be activated.
attr_reader :spec
##
# Creates a new ActivationRequest that will activate +spec+. The parent
# +request+ is used to provide diagnostics in case of conflicts.
def initialize(spec, request)
@spec = spec
@request = request
end
def ==(other) # :nodoc:
case other
when Gem::Specification
@spec == other
when Gem::Resolver::ActivationRequest
@spec == other.spec
else
false
end
end
def eql?(other)
self == other
end
def hash
@spec.hash
end
##
# Is this activation request for a development dependency?
def development?
@request.development?
end
##
# Downloads a gem at +path+ and returns the file path.
def download(path)
Gem.ensure_gem_subdirectories path
if @spec.respond_to? :sources
exception = nil
path = @spec.sources.find do |source|
begin
source.download full_spec, path
rescue exception
end
end
return path if path
raise exception if exception
elsif @spec.respond_to? :source
source = @spec.source
source.download full_spec, path
else
source = Gem.sources.first
source.download full_spec, path
end
end
##
# The full name of the specification to be activated.
def full_name
name_tuple.full_name
end
alias_method :to_s, :full_name
##
# The Gem::Specification for this activation request.
def full_spec
Gem::Specification === @spec ? @spec : @spec.spec
end
def inspect # :nodoc:
'#<%s for %p from %s>' % [
self.class, @spec, @request
]
end
##
# True if the requested gem has already been installed.
def installed?
case @spec
when Gem::Resolver::VendorSpecification then
true
else
this_spec = full_spec
Gem::Specification.any? do |s|
s == this_spec
end
end
end
##
# The name of this activation request's specification
def name
@spec.name
end
##
# Return the ActivationRequest that contained the dependency
# that we were activated for.
def parent
@request.requester
end
def pretty_print(q) # :nodoc:
q.group 2, '[Activation request', ']' do
q.breakable
q.pp @spec
q.breakable
q.text ' for '
q.pp @request
end
end
##
# The version of this activation request's specification
def version
@spec.version
end
##
# The platform of this activation request's specification
def platform
@spec.platform
end
private
def name_tuple
@name_tuple ||= Gem::NameTuple.new(name, version, platform)
end
end
PK !