Class: Gem::Requirement
- Inherits:
-
Object
- Object
- Gem::Requirement
- Includes:
- Comparable
- Defined in:
- lib/rubygems/version.rb
Overview
Requirement version includes a prefaced comparator in addition to a version number.
A Requirement object can actually contain multiple, er, requirements, as in (> 1.2, < 2.0).
Constant Summary collapse
- OPS =
{ "=" => lambda { |v, r| v == r }, "!=" => lambda { |v, r| v != r }, ">" => lambda { |v, r| v > r }, "<" => lambda { |v, r| v < r }, ">=" => lambda { |v, r| v >= r }, "<=" => lambda { |v, r| v <= r }, "~>" => lambda { |v, r| v >= r && v < r.bump } }
- OP_RE =
Regexp.new(OPS.keys.collect{|k| Regexp.quote(k)}.join("|"))
- REQ_RE =
/\s*(#{OP_RE})\s*/
Class Method Summary collapse
-
.create(input) ⇒ Object
Factory method to create a Version::Requirement object.
-
.default ⇒ Object
A default “version requirement” can surely only be ‘> 0’.
Instance Method Summary collapse
- #as_list ⇒ Object
- #hash ⇒ Object
-
#initialize(reqs) ⇒ Requirement
constructor
Constructs a version requirement instance.
- #normalize ⇒ Object
-
#satisfied_by?(version) ⇒ Boolean
Is the requirement satifised by
version
. -
#to_s ⇒ Object
Overrides to check for comparator.
Constructor Details
#initialize(reqs) ⇒ Requirement
Constructs a version requirement instance
- str
- String Array
-
the version requirement string (e.g. [“> 1.23”])
236 237 238 239 240 241 242 |
# File 'lib/rubygems/version.rb', line 236 def initialize(reqs) @requirements = reqs.collect do |rq| op, version_string = parse(rq) [op, Version.new(version_string)] end @version = nil # Avoid warnings. end |
Class Method Details
.create(input) ⇒ Object
Factory method to create a Version::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.
212 213 214 215 216 217 218 219 220 221 222 |
# File 'lib/rubygems/version.rb', line 212 def self.create(input) if input.kind_of?(Requirement) return input elsif input.kind_of?(Array) return self.new(input) elsif input.respond_to? :to_str return self.new([input.to_str]) else return self.default end end |
.default ⇒ Object
A default “version requirement” can surely only be ‘> 0’.
227 228 229 |
# File 'lib/rubygems/version.rb', line 227 def self.default self.new(['> 0.0.0']) end |
Instance Method Details
#as_list ⇒ Object
259 260 261 262 263 264 |
# File 'lib/rubygems/version.rb', line 259 def as_list normalize @requirements.collect { |req| "#{req[0]} #{req[1]}" } end |
#hash ⇒ Object
315 316 317 |
# File 'lib/rubygems/version.rb', line 315 def hash to_s.hash end |
#normalize ⇒ Object
266 267 268 269 270 271 272 |
# File 'lib/rubygems/version.rb', line 266 def normalize return if not defined? @version or @version.nil? @requirements = [parse(@version)] @nums = nil @version = nil @op = nil end |
#satisfied_by?(version) ⇒ Boolean
Is the requirement satifised by version
.
- version
- Gem::Version
-
the version to compare against
- return
- Boolean
-
true if this requirement is satisfied by
the version, otherwise false
281 282 283 284 |
# File 'lib/rubygems/version.rb', line 281 def satisfied_by?(version) normalize @requirements.all? { |op, rv| satisfy?(op, version, rv) } end |
#to_s ⇒ Object
Overrides to check for comparator
- str
- String
-
the version requirement string
- return
- Boolean
-
true if the string format is correct, otherwise false
NOTE: Commented out because I don’t think it is used.
def correct?(str)
/^#{REQ_RE}#{NUM_RE}$/.match(str)
end
255 256 257 |
# File 'lib/rubygems/version.rb', line 255 def to_s as_list.join(", ") end |