diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-06-09 21:38:59 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-06-09 21:38:59 +0000 |
commit | 31c94ffeb5f09d09ac2c86fc9e6614e38251a43d (patch) | |
tree | 10e44506238c7af3d7c9d822111996731726e38d /lib/rubygems/requirement.rb | |
parent | a6afbaeb3be396c0fdea3b9077d9256c59edcfca (diff) | |
download | ruby-31c94ffeb5f09d09ac2c86fc9e6614e38251a43d.tar.gz |
Update to RubyGems 1.3.4 r2223
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/requirement.rb')
-rw-r--r-- | lib/rubygems/requirement.rb | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/lib/rubygems/requirement.rb b/lib/rubygems/requirement.rb index c9128b5ebc..471d84eb61 100644 --- a/lib/rubygems/requirement.rb +++ b/lib/rubygems/requirement.rb @@ -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 } + "~>" => lambda { |v, r| v = v.release; v >= r && v < r.bump } } - OP_RE = /#{OPS.keys.map{ |k| Regexp.quote k }.join '|'}/o + OP_RE = OPS.keys.map{ |k| Regexp.quote k }.join '|' ## # 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 + # 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 pretty_print(q) # :nodoc: + q.group 1, 'Gem::Requirement.new(', ')' do + q.pp as_list + end + end + def as_list normalize - @requirements.collect { |req| - "#{req[0]} #{req[1]}" - } + @requirements.map do |op, version| "#{op} #{version}" end end def normalize @@ -129,18 +131,23 @@ class Gem::Requirement OPS[op].call(version, required_version) end + def prerelease? + # TODO: why is @requirements a nested array? + @requirements.any?{ |r| r[1].prerelease? } + 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 + # operator (<, <=, =, >=, >, !=, ~>), a version number, or both, operator # first. def parse(obj) case obj - when /^\s*(#{OP_RE})\s*([0-9.]+)\s*$/o then + when /^\s*(#{OP_RE})\s*(#{Gem::Version::VERSION_PATTERN})\s*$/o then [$1, Gem::Version.new($2)] - when /^\s*([0-9.]+)\s*$/ then + when /^\s*(#{Gem::Version::VERSION_PATTERN})\s*$/o then ['=', Gem::Version.new($1)] when /^\s*(#{OP_RE})\s*$/o then [$1, Gem::Version.new('0')] |