stdlib/rubygems/0/requirement.rbs in rbs-1.1.1 vs stdlib/rubygems/0/requirement.rbs in rbs-1.2.0
- old
+ new
@@ -1,3 +1,85 @@
-class Gem::Requirement
- # TODO: Add sinatures...
+module Gem
+ # A Requirement is a set of one or more version restrictions. It supports a few
+ # (`=, !=, >, <, >=, <=, ~>`) different restriction operators.
+ #
+ # See Gem::Version for a description on how versions and requirements work
+ # together in RubyGems.
+ #
+ class Requirement
+ type operator = "=" | "!=" | ">" | "<" | ">=" | "<=" | "~>"
+
+ # Raised when a bad requirement is encountered
+ #
+ class BadRequirementError < ArgumentError
+ end
+
+ # The default requirement matches any version
+ #
+ DefaultPrereleaseRequirement: [ operator, Gem::Version ]
+
+ # The default requirement matches any non-prerelease version
+ #
+ DefaultRequirement: [ operator, Gem::Version ]
+
+ # A regular expression that matches a requirement
+ #
+ PATTERN: Regexp
+
+ # Factory method to create a Gem::Requirement object. Input may be a Version, a
+ # String, or nil. Intended to simplify client code.
+ #
+ # If the input is "weird", the default version requirement is returned.
+ #
+ def self.create: (*(String | Gem::Version | Gem::Requirement | nil) inputs) -> instance
+
+ def self.default: () -> instance
+
+ def self.default_prerelease: () -> instance
+
+ # Parse `obj`, returning an `[op, version]` pair. `obj` can be a String or a
+ # Gem::Version.
+ #
+ # If `obj` is a String, it can be either a full requirement specification, like
+ # `">= 1.2"`, or a simple version number, like `"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")]
+ #
+ def self.parse: (String | Gem::Version obj) -> [ operator, Gem::Version ]
+
+ # Constructs a requirement from `requirements`. Requirements can be Strings,
+ # Gem::Versions, or Arrays of those. `nil` and duplicate requirements are
+ # ignored. An empty set of `requirements` is the same as `">= 0"`.
+ #
+ def initialize: (*(String | Gem::Version) requirements) -> void
+
+ # Concatenates the `new` requirements onto this requirement.
+ #
+ def concat: (Array[String | Gem::Version] new) -> void
+
+ # true if the requirement is for only an exact version
+ #
+ def exact?: () -> bool
+
+ # true if this gem has no requirements.
+ #
+ def none?: () -> bool
+
+ # A requirement is a prerelease if any of the versions inside of it are
+ # prereleases
+ #
+ def prerelease?: () -> bool
+
+ # True if `version` satisfies this Requirement.
+ #
+ def satisfied_by?: (Gem::Version version) -> bool
+
+ alias === satisfied_by?
+ alias =~ satisfied_by?
+
+ # True if the requirement will not always match the latest version.
+ #
+ def specific?: () -> bool
+ end
end