diff options
-rw-r--r-- | lib/rubygems/requirement.rb | 29 |
1 files changed, 18 insertions, 11 deletions
@@ -4,8 +4,6 @@ # See LICENSE.txt for permissions. #++ -require 'rubygems/version' - ## # Requirement version includes a prefaced comparator in addition # to a version number. @@ -26,10 +24,10 @@ class Gem::Requirement "<" => 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 = /#{OPS.keys.map{ |k| Regexp.quote k }.join '|'}/o ## # Factory method to create a Gem::Requirement object. Input may be a @@ -65,7 +63,7 @@ class Gem::Requirement ## # Constructs a Requirement from +requirements+ which can be a String, a - # Gem::Version, or an Array of those. See parse for details on the # formatting of requirement strings. def initialize(requirements) @@ -99,11 +97,15 @@ class Gem::Requirement as_list.join(", ") end def as_list normalize - @requirements.collect { |req| - "#{req[0]} #{req[1]}" - } end def normalize @@ -129,18 +131,23 @@ class Gem::Requirement OPS[op].call(version, required_version) end ## # Parse the version requirement obj returning the operator and version. # # The requirement can be a String or a Gem::Version. A String can be an - # operator (<, <=, =, =>, >, !=, ~>), a version number, or both, operator # first. def parse(obj) case obj - when /^\s*(#{OP_RE})\s*([0-9.]+)\s*$/o then [$1, Gem::Version.new($2)] - when /^\s*([0-9.]+)\s*$/ then ['=', Gem::Version.new($1)] when /^\s*(#{OP_RE})\s*$/o then [$1, Gem::Version.new('0')] |