A Requirement
is a set of one or more version restrictions. It supports a few (=, !=, >, <, >=, <=, ~>
) different restriction operators.
See Gem::Version
for a description on how versions and requirements work together in RubyGems.
- #
- C
- D
- E
- N
- P
- S
Constants
DefaultPrereleaseRequirement | = | [">=", Gem::Version.new("0.a")].freeze |
The default requirement matches any version |
||
DefaultRequirement | = | [">=", Gem::Version.new(0)].freeze |
The default requirement matches any non-prerelease version |
||
PATTERN | = | /\A#{PATTERN_RAW}\z/ |
A regular expression that matches a requirement |
Class Public methods
create(*inputs) Link
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 ruby/lib/rubygems/requirement.rb, line 55 def self.create(*inputs) return new inputs if inputs.length > 1 input = inputs.shift case input when Gem::Requirement then input when Gem::Version, Array then new input when "!" then source_set else if input.respond_to? :to_str new [input.to_str] else default end end end
default() Link
default_prerelease() Link
new(*requirements) Link
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 ruby/lib/rubygems/requirement.rb, line 131 def initialize(*requirements) requirements = requirements.flatten requirements.compact! requirements.uniq! if requirements.empty? @requirements = [DefaultRequirement] else @requirements = requirements.map! {|r| self.class.parse r } end end
parse(obj) Link
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") # => [">", Gem::Version.new("1.0")]
parse("1.0") # => ["=", Gem::Version.new("1.0")]
parse(Gem::Version.new("1.0")) # => ["=, Gem::Version.new("1.0")]
# File ruby/lib/rubygems/requirement.rb, line 103 def self.parse(obj) return ["=", obj] if Gem::Version === obj unless PATTERN =~ obj.to_s raise BadRequirementError, "Illformed requirement [#{obj.inspect}]" end if $1 == ">=" && $2 == "0" DefaultRequirement elsif $1 == ">=" && $2 == "0.a" DefaultPrereleaseRequirement else [-($1 || "="), Gem::Version.new($2)] end end
Instance Public methods
concat(new) Link
Concatenates the new
requirements onto this requirement.
exact?() Link
true if the requirement is for only an exact version
none?() Link
true if this gem has no requirements.
prerelease?() Link
A requirement is a prerelease if any of the versions inside of it are prereleases
satisfied_by?(version) Link
True if version
satisfies this Requirement
.
specific?() Link
True if the requirement will not always match the latest version.