class Gem::Requirement
Ein Requirement ist eine Menge von einer oder mehreren Versionsbeschränkungen. Es unterstützt einige (=, !=, >, <, >=, <=, ~>) verschiedene Beschränkungsoperatoren.
Siehe Gem::Version für eine Beschreibung, wie Versionen und Anforderungen in RubyGems zusammenarbeiten.
Constants
- DefaultPrereleaseRequirement
-
Die Standardanforderung stimmt mit jeder Version überein
- DefaultRequirement
-
Die Standardanforderung stimmt mit jeder Nicht-Vorgabeveröffentlichung überein
- PATTERN
-
Ein regulärer Ausdruck, der eine Anforderung abgleicht
Öffentliche Klassenmethoden
Source
# File lib/rubygems/requirement.rb, line 55 def self.create(*inputs) return new inputs if inputs.length > 1 input = inputs.shift case input when Gem::Requirement then input when Gem::Version, Array then new input when "!" then source_set else if input.respond_to? :to_str new [input.to_str] else default end end end
Factory-Methode zum Erstellen eines Gem::Requirement-Objekts. Eingaben können eine Version, ein String oder nil sein. Gedacht, um den Client-Code zu vereinfachen.
Wenn die Eingabe "komisch" ist, wird die Standard-Versionsanforderung zurückgegeben.
Source
# File lib/rubygems/requirement.rb, line 80 def self.default_prerelease new ">= 0.a" end
Source
# File lib/rubygems/requirement.rb, line 133 def initialize(*requirements) requirements = requirements.flatten requirements.compact! requirements.uniq! if requirements.empty? @requirements = [DefaultRequirement] else @requirements = requirements.map! {|r| self.class.parse r } end end
Konstruiert eine Anforderung aus requirements. Anforderungen können Strings, Gem::Versions oder Arrays davon sein. nil und doppelte Anforderungen werden ignoriert. Ein leerer Satz von requirements ist dasselbe wie ">= 0".
Source
# File lib/rubygems/requirement.rb, line 103 def self.parse(obj) return ["=", obj] if Gem::Version === obj unless PATTERN =~ obj.to_s raise BadRequirementError, "Illformed requirement [#{obj.inspect}]" end op = -($1 || "=") version = -$2 if op == ">=" && version == "0" DefaultRequirement elsif op == ">=" && version == "0.a" DefaultPrereleaseRequirement else [op, Gem::Version.new(version)] end end
Parse obj und gibt ein [op, version] Paar zurück. obj kann ein String oder eine Gem::Version sein.
Wenn obj ein String ist, kann es entweder eine vollständige Anforderungsspezifikation sein, wie ">= 1.2", oder eine einfache Versionsnummer, wie "1.2".
parse("> 1.0") # => [">", Gem::Version.new("1.0")] parse("1.0") # => ["=", Gem::Version.new("1.0")] parse(Gem::Version.new("1.0")) # => ["=, Gem::Version.new("1.0")]
Öffentliche Instanzmethoden
Source
# File lib/rubygems/requirement.rb, line 148 def concat(new) new = new.flatten new.compact! new.uniq! new = new.map {|r| self.class.parse r } @requirements.concat new end
Verkettet die new Anforderungen mit dieser Anforderung.
Source
# File lib/rubygems/requirement.rb, line 186 def exact? return false unless @requirements.size == 1 @requirements[0][0] == "=" end
true, wenn die Anforderung nur eine exakte Version betrifft
Source
# File lib/rubygems/requirement.rb, line 175 def none? if @requirements.size == 1 @requirements[0] == DefaultRequirement else false end end
true, wenn dieses Gem keine Anforderungen hat.
Source
# File lib/rubygems/requirement.rb, line 228 def prerelease? requirements.any? {|r| r.last.prerelease? } end
Eine Anforderung ist eine Vorgabeveröffentlichung, wenn eine der darin enthaltenen Versionen eine Vorgabeveröffentlichung ist
Source
# File lib/rubygems/requirement.rb, line 241 def satisfied_by?(version) raise ArgumentError, "Need a Gem::Version: #{version.inspect}" unless Gem::Version === version requirements.all? {|op, rv| OPS.fetch(op).call version, rv } end
True, wenn version diese Requirement erfüllt.
Source
# File lib/rubygems/requirement.rb, line 253 def specific? return true if @requirements.length > 1 # GIGO, > 1, > 2 is silly !%w[> >=].include? @requirements.first.first # grab the operator end
True, wenn die Anforderung nicht immer mit der neuesten Version übereinstimmt.
Geschützte Instanzmethoden
Source
# File lib/rubygems/requirement.rb, line 279 def _sorted_requirements @_sorted_requirements ||= requirements.sort_by(&:to_s) end
Source
# File lib/rubygems/requirement.rb, line 283 def _tilde_requirements @_tilde_requirements ||= _sorted_requirements.select {|r| r.first == "~>" } end