aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems/requirement.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/requirement.rb')
-rw-r--r--lib/rubygems/requirement.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/rubygems/requirement.rb b/lib/rubygems/requirement.rb
index bcf5fb967e..572bf9673e 100644
--- a/lib/rubygems/requirement.rb
+++ b/lib/rubygems/requirement.rb
@@ -23,6 +23,8 @@ class Gem::Requirement
"~>" => lambda { |v, r| v >= r && v.release < r.bump }
}
+ SOURCE_SET_REQUIREMENT = Struct.new(:for_lockfile).new "!" # :nodoc:
+
quoted = OPS.keys.map { |k| Regexp.quote k }.join "|"
PATTERN_RAW = "\\s*(#{quoted})?\\s*(#{Gem::Version::VERSION_PATTERN})\\s*" # :nodoc:
@@ -54,6 +56,8 @@ class Gem::Requirement
input
when Gem::Version, Array then
new input
+ when '!' then
+ source_set
else
if input.respond_to? :to_str then
new [input.to_str]
@@ -70,6 +74,13 @@ class Gem::Requirement
new '>= 0'
end
+ ###
+ # A source set requirement, used for Gemfiles and lockfiles
+
+ def self.source_set # :nodoc:
+ SOURCE_SET_REQUIREMENT
+ end
+
##
# Parse +obj+, returning an <tt>[op, version]</tt> pair. +obj+ can
# be a String or a Gem::Version.