diff options
Diffstat (limited to 'lib/rubygems/dependency.rb')
-rw-r--r-- | lib/rubygems/dependency.rb | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/lib/rubygems/dependency.rb b/lib/rubygems/dependency.rb index 351991067d..ec5d88b607 100644 --- a/lib/rubygems/dependency.rb +++ b/lib/rubygems/dependency.rb @@ -69,9 +69,6 @@ class Gem::Dependency end ## - # What does this dependency require? - - ## # A dependency's hash is the XOR of the hashes of +name+, +type+, # and +requirement+. @@ -106,6 +103,9 @@ class Gem::Dependency end end + ## + # What does this dependency require? + def requirement return @requirement if defined?(@requirement) and @requirement @@ -160,7 +160,16 @@ class Gem::Dependency __requirement end - alias_method :version_requirement, :version_requirements + alias version_requirement version_requirements # :nodoc: + + def version_requirements= requirements # :nodoc: + warn "#{Gem.location_of_caller.join ':'}:Warning: " \ + "Gem::Dependency#version_requirements= is deprecated " \ + "and will be removed on or after August 2010. " \ + "Use Gem::Dependency.new." + + @requirement = Gem::Requirement.create requirements + end def == other # :nodoc: Gem::Dependency === other && @@ -188,9 +197,12 @@ class Gem::Dependency end pattern = name - pattern = /\A#{Regexp.escape pattern}\Z/ unless Regexp === pattern - return false unless pattern =~ other.name + if Regexp === pattern then + return false unless pattern =~ other.name + else + return false unless pattern == other.name + end reqs = other.requirement.requirements @@ -202,5 +214,19 @@ class Gem::Dependency requirement.satisfied_by? version end + def match?(spec_name, spec_version) + pattern = name + + if Regexp === pattern + return false unless pattern =~ spec_name + else + return false unless pattern == spec_name + end + + return true if requirement.none? + + requirement.satisfied_by? Gem::Version.new(spec_version) + end + end |