Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
Factory method to create a Gem::Requirement object. Input may be a Version, a String, or nil. Intended to simplify client code.
If the input is “weird”, the default version requirement is returned.
# File rubygems/requirement.rb, line 39
def self.create input
case input
when Gem::Requirement then
input
when Gem::Version, Array then
new input
else
if input.respond_to? :to_str then
new [input.to_str]
else
default
end
end
end
A default “version requirement” can surely only be ‘>= 0’.
# File rubygems/requirement.rb, line 61
def self.default
new '>= 0'
end
Constructs a requirement from requirements. Requirements can
be Strings, Gem::Versions, or Arrays of those. nil and
duplicate requirements are ignored. An empty set of
requirements is the same as ">= 0".
# File rubygems/requirement.rb, line 99
def initialize *requirements
requirements = requirements.flatten
requirements.compact!
requirements.uniq!
requirements << ">= 0" if requirements.empty?
@none = (requirements == ">= 0")
@requirements = requirements.map! { |r| self.class.parse r }
end
Parse obj, returning an [op, version] pair.
obj can be a String or a Gem::Version.
If obj is a String, it can be either a full requirement
specification, like ">= 1.2", or a simple version
number, like "1.2".
parse("> 1.0") # => [">", "1.0"] parse("1.0") # => ["=", "1.0"] parse(Gem::Version.new("1.0")) # => ["=, "1.0"]
# File rubygems/requirement.rb, line 77
def self.parse obj
return ["=", obj] if Gem::Version === obj
unless PATTERN =~ obj.to_s
raise ArgumentError, "Illformed requirement [#{obj.inspect}]"
end
[$1 || "=", Gem::Version.new($2)]
end
# File rubygems/requirement.rb, line 109
def none?
@none ||= (to_s == ">= 0")
end
# File rubygems/requirement.rb, line 145
def prerelease?
requirements.any? { |r| r.last.prerelease? }
end
True if version satisfies this Requirement.
# File rubygems/requirement.rb, line 158
def satisfied_by? version
# #28965: syck has a bug with unquoted '=' YAML.loading as YAML::DefaultKey
requirements.all? { |op, rv| (OPS[op] || OPS["="]).call version, rv }
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.