stdlib/uri/0/rfc2396_parser.rbs in rbs-1.0.4 vs stdlib/uri/0/rfc2396_parser.rbs in rbs-1.0.5
- old
+ new
@@ -1,9 +1,146 @@
-# Class that parses String's into URI's.
-#
-# It contains a Hash set of patterns and Regexp's that match and validate.
-class URI::RFC2396_Parser
-end
+module URI
+ # Includes URI::REGEXP::PATTERN
+ #
+ module RFC2396_REGEXP
+ end
-# Includes URI::REGEXP::PATTERN
-module URI::RFC2396_REGEXP
+ # Class that parses String's into URI's.
+ #
+ # It contains a Hash set of patterns and Regexp's that match and validate.
+ #
+ class RFC2396_Parser
+ include RFC2396_REGEXP
+
+ # The Hash of patterns.
+ #
+ # See also URI::Parser.initialize_pattern.
+ #
+ attr_reader pattern: Hash[Symbol, String]
+
+ # The Hash of Regexp.
+ #
+ # See also URI::Parser.initialize_regexp.
+ #
+ attr_reader regexp: Hash[Symbol, Regexp]
+
+ # == Synopsis
+ #
+ # URI::Parser.new([opts])
+ #
+ # == Args
+ #
+ # The constructor accepts a hash as options for parser.
+ # Keys of options are pattern names of URI components
+ # and values of options are pattern strings.
+ # The constructor generates set of regexps for parsing URIs.
+ #
+ # You can use the following keys:
+ #
+ # * :ESCAPED (URI::PATTERN::ESCAPED in default)
+ # * :UNRESERVED (URI::PATTERN::UNRESERVED in default)
+ # * :DOMLABEL (URI::PATTERN::DOMLABEL in default)
+ # * :TOPLABEL (URI::PATTERN::TOPLABEL in default)
+ # * :HOSTNAME (URI::PATTERN::HOSTNAME in default)
+ #
+ # == Examples
+ #
+ # p = URI::Parser.new(:ESCAPED => "(?:%[a-fA-F0-9]{2}|%u[a-fA-F0-9]{4})")
+ # u = p.parse("http://example.jp/%uABCD") #=> #<URI::HTTP http://example.jp/%uABCD>
+ # URI.parse(u.to_s) #=> raises URI::InvalidURIError
+ #
+ # s = "http://example.com/ABCD"
+ # u1 = p.parse(s) #=> #<URI::HTTP http://example.com/ABCD>
+ # u2 = URI.parse(s) #=> #<URI::HTTP http://example.com/ABCD>
+ # u1 == u2 #=> true
+ # u1.eql?(u2) #=> false
+ #
+ def initialize: (?Hash[Symbol, String] opts) -> void
+
+ # ## Args
+ #
+ # `str`
+ # : String to make safe
+ # `unsafe`
+ # : Regexp to apply. Defaults to [self.regexp](:UNSAFE)
+ #
+ #
+ # ## Description
+ #
+ # Constructs a safe String from `str`, removing unsafe characters, replacing
+ # them with codes.
+ #
+ def escape: (String str, ?Regexp unsafe) -> String
+
+ # ## Args
+ #
+ # `str`
+ # : String to search
+ # `schemes`
+ # : Patterns to apply to `str`
+ #
+ #
+ # ## Description
+ #
+ # Attempts to parse and merge a set of URIs. If no `block` given, then returns
+ # the result, else it calls `block` for each element in result.
+ #
+ # See also URI::Parser.make_regexp.
+ #
+ def extract: (String str, ?Array[String] schemes) -> Array[String]
+ | (String str, ?Array[String] schemes) { (String) -> untyped } -> nil
+
+ # ## Args
+ #
+ # `uris`
+ # : an Array of Strings
+ #
+ #
+ # ## Description
+ #
+ # Attempts to parse and merge a set of URIs.
+ #
+ def join: (*String uris) -> URI::Generic
+
+ # Returns Regexp that is default [self.regexp](:ABS_URI_REF), unless `schemes`
+ # is provided. Then it is a Regexp.union with [self.pattern](:X_ABS_URI).
+ #
+ def make_regexp: (?Array[String] schemes) -> Regexp
+
+ # ## Args
+ #
+ # `uri`
+ # : String
+ #
+ #
+ # ## Description
+ #
+ # Parses `uri` and constructs either matching URI scheme object (File, FTP,
+ # HTTP, HTTPS, LDAP, LDAPS, or MailTo) or URI::Generic.
+ #
+ # ## Usage
+ #
+ # p = URI::Parser.new
+ # p.parse("ldap://ldap.example.com/dc=example?user=john")
+ # #=> #<URI::LDAP ldap://ldap.example.com/dc=example?user=john>
+ #
+ def parse: (String uri) -> URI::Generic
+
+ # Returns a split URI against [regexp](:ABS_URI).
+ #
+ def split: (String uri) -> [ String?, String?, String?, String?, String?, String?, String?, String?, String? ]
+
+ # ## Args
+ #
+ # `str`
+ # : String to remove escapes from
+ # `escaped`
+ # : Regexp to apply. Defaults to [self.regexp](:ESCAPED)
+ #
+ #
+ # ## Description
+ #
+ # Removes escapes from `str`.
+ #
+ def unescape: (String str, ?Regexp escaped) -> String
+ end
end