uri 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5e32cdbfcc4ace0d2d7725f91df557f0f63cd09eedbacd13134457b5d6186b6b
4
- data.tar.gz: a8afae357ba17c192629c04a27c615baac982d83659ed0ad56ec248e53eec823
3
+ metadata.gz: d722ba02149add1e89ff05e9d244d6eaa52545455870b90acabbd69248817384
4
+ data.tar.gz: 28dcbbf85d8c2b09a9840d0ef08e2f566d7d9a9c71bf293a597c7eb8fb4f3ba0
5
5
  SHA512:
6
- metadata.gz: 5fd294d6b44511a930257f6422525c100c8f5bb3cf9ecc9a8c2afbcda6bd2c863a0ece45450dc0bcb611de7815f8e5dcf398fa1c44f88dfb5df34fc111ffa98a
7
- data.tar.gz: 022475711eb79ff13b44b19efdba281d50729f5517d01e68da2a6943192546ed2d2cacea17f7b01774e1b4ce8765dbdb79f81390f69f7cbc8d3935947755eca9
6
+ metadata.gz: eaf90afcb2a7f8cad8e29322ac42d0e01f514a3ee8aed55494b8d7ba94757ff7415a0851f7192beed1025207cc974565e3a0ea8b0fafccf3ae49cccd0ee48f9e
7
+ data.tar.gz: 03e1149499988dadd16cdd5757dc418ac8a937901858ad06f4740db08ac4b3bf267f7a33cb72c3af8cc5193c7354876ee63b2e6df64c262d928b5db8f7d3fd96
data/.rdoc_options CHANGED
@@ -2,3 +2,4 @@ main_page: README.md
2
2
  op_dir: _site
3
3
  warn_missing_rdoc_ref: true
4
4
  title: URI Documentation
5
+ visibility: :private
data/lib/uri/common.rb CHANGED
@@ -30,6 +30,9 @@ module URI
30
30
  remove_const(:Parser) if defined?(::URI::Parser)
31
31
  const_set("Parser", parser.class)
32
32
 
33
+ remove_const(:PARSER) if defined?(::URI::PARSER)
34
+ const_set("PARSER", parser)
35
+
33
36
  remove_const(:REGEXP) if defined?(::URI::REGEXP)
34
37
  remove_const(:PATTERN) if defined?(::URI::PATTERN)
35
38
  if Parser == RFC2396_Parser
@@ -49,10 +52,10 @@ module URI
49
52
  warn "URI::REGEXP is obsolete. Use URI::RFC2396_REGEXP explicitly.", uplevel: 1 if $VERBOSE
50
53
  URI::RFC2396_REGEXP
51
54
  elsif value = RFC2396_PARSER.regexp[const]
52
- warn "URI::#{const} is obsolete. Use RFC2396_PARSER.regexp[#{const.inspect}] explicitly.", uplevel: 1 if $VERBOSE
55
+ warn "URI::#{const} is obsolete. Use URI::RFC2396_PARSER.regexp[#{const.inspect}] explicitly.", uplevel: 1 if $VERBOSE
53
56
  value
54
57
  elsif value = RFC2396_Parser.const_get(const)
55
- warn "URI::#{const} is obsolete. Use RFC2396_Parser::#{const} explicitly.", uplevel: 1 if $VERBOSE
58
+ warn "URI::#{const} is obsolete. Use URI::RFC2396_Parser::#{const} explicitly.", uplevel: 1 if $VERBOSE
56
59
  value
57
60
  else
58
61
  super
@@ -92,6 +95,40 @@ module URI
92
95
  end
93
96
 
94
97
  module Schemes # :nodoc:
98
+ class << self
99
+ ReservedChars = ".+-"
100
+ EscapedChars = "\u01C0\u01C1\u01C2"
101
+ # Use Lo category chars as escaped chars for TruffleRuby, which
102
+ # does not allow Symbol categories as identifiers.
103
+
104
+ def escape(name)
105
+ unless name and name.ascii_only?
106
+ return nil
107
+ end
108
+ name.upcase.tr(ReservedChars, EscapedChars)
109
+ end
110
+
111
+ def unescape(name)
112
+ name.tr(EscapedChars, ReservedChars).encode(Encoding::US_ASCII).upcase
113
+ end
114
+
115
+ def find(name)
116
+ const_get(name, false) if name and const_defined?(name, false)
117
+ end
118
+
119
+ def register(name, klass)
120
+ unless scheme = escape(name)
121
+ raise ArgumentError, "invalid character as scheme - #{name}"
122
+ end
123
+ const_set(scheme, klass)
124
+ end
125
+
126
+ def list
127
+ constants.map { |name|
128
+ [unescape(name.to_s), const_get(name)]
129
+ }.to_h
130
+ end
131
+ end
95
132
  end
96
133
  private_constant :Schemes
97
134
 
@@ -104,7 +141,7 @@ module URI
104
141
  # Note that after calling String#upcase on +scheme+, it must be a valid
105
142
  # constant name.
106
143
  def self.register_scheme(scheme, klass)
107
- Schemes.const_set(scheme.to_s.upcase, klass)
144
+ Schemes.register(scheme, klass)
108
145
  end
109
146
 
110
147
  # Returns a hash of the defined schemes:
@@ -122,14 +159,14 @@ module URI
122
159
  #
123
160
  # Related: URI.register_scheme.
124
161
  def self.scheme_list
125
- Schemes.constants.map { |name|
126
- [name.to_s.upcase, Schemes.const_get(name)]
127
- }.to_h
162
+ Schemes.list
128
163
  end
129
164
 
165
+ # :stopdoc:
130
166
  INITIAL_SCHEMES = scheme_list
131
167
  private_constant :INITIAL_SCHEMES
132
168
  Ractor.make_shareable(INITIAL_SCHEMES) if defined?(Ractor)
169
+ # :startdoc:
133
170
 
134
171
  # Returns a new object constructed from the given +scheme+, +arguments+,
135
172
  # and +default+:
@@ -148,12 +185,10 @@ module URI
148
185
  # # => #<URI::HTTP foo://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top>
149
186
  #
150
187
  def self.for(scheme, *arguments, default: Generic)
151
- const_name = scheme.to_s.upcase
188
+ const_name = Schemes.escape(scheme)
152
189
 
153
190
  uri_class = INITIAL_SCHEMES[const_name]
154
- uri_class ||= if /\A[A-Z]\w*\z/.match?(const_name) && Schemes.const_defined?(const_name, false)
155
- Schemes.const_get(const_name, false)
156
- end
191
+ uri_class ||= Schemes.find(const_name)
157
192
  uri_class ||= default
158
193
 
159
194
  return uri_class.new(scheme, *arguments)
@@ -195,7 +230,7 @@ module URI
195
230
  # ["fragment", "top"]]
196
231
  #
197
232
  def self.split(uri)
198
- DEFAULT_PARSER.split(uri)
233
+ PARSER.split(uri)
199
234
  end
200
235
 
201
236
  # Returns a new \URI object constructed from the given string +uri+:
@@ -205,11 +240,11 @@ module URI
205
240
  # URI.parse('http://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top')
206
241
  # # => #<URI::HTTP http://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top>
207
242
  #
208
- # It's recommended to first ::escape string +uri+
243
+ # It's recommended to first URI::RFC2396_PARSER.escape string +uri+
209
244
  # if it may contain invalid URI characters.
210
245
  #
211
246
  def self.parse(uri)
212
- DEFAULT_PARSER.parse(uri)
247
+ PARSER.parse(uri)
213
248
  end
214
249
 
215
250
  # Merges the given URI strings +str+
@@ -265,7 +300,7 @@ module URI
265
300
  #
266
301
  def self.extract(str, schemes = nil, &block) # :nodoc:
267
302
  warn "URI.extract is obsolete", uplevel: 1 if $VERBOSE
268
- DEFAULT_PARSER.extract(str, schemes, &block)
303
+ PARSER.extract(str, schemes, &block)
269
304
  end
270
305
 
271
306
  #
@@ -302,7 +337,7 @@ module URI
302
337
  #
303
338
  def self.regexp(schemes = nil)# :nodoc:
304
339
  warn "URI.regexp is obsolete", uplevel: 1 if $VERBOSE
305
- DEFAULT_PARSER.make_regexp(schemes)
340
+ PARSER.make_regexp(schemes)
306
341
  end
307
342
 
308
343
  TBLENCWWWCOMP_ = {} # :nodoc:
@@ -407,6 +442,8 @@ module URI
407
442
  _decode_uri_component(/%\h\h/, str, enc)
408
443
  end
409
444
 
445
+ # Returns a string derived from the given string +str+ with
446
+ # URI-encoded characters matching +regexp+ according to +table+.
410
447
  def self._encode_uri_component(regexp, table, str, enc)
411
448
  str = str.to_s.dup
412
449
  if str.encoding != Encoding::ASCII_8BIT
@@ -421,6 +458,8 @@ module URI
421
458
  end
422
459
  private_class_method :_encode_uri_component
423
460
 
461
+ # Returns a string decoding characters matching +regexp+ from the
462
+ # given \URL-encoded string +str+.
424
463
  def self._decode_uri_component(regexp, str, enc)
425
464
  raise ArgumentError, "invalid %-encoding (#{str})" if /%(?!\h\h)/.match?(str)
426
465
  str.b.gsub(regexp, TBLDECWWWCOMP_).force_encoding(enc)
@@ -859,6 +898,7 @@ module Kernel
859
898
  # Returns a \URI object derived from the given +uri+,
860
899
  # which may be a \URI string or an existing \URI object:
861
900
  #
901
+ # require 'uri'
862
902
  # # Returns a new URI.
863
903
  # uri = URI('http://github.com/ruby/ruby')
864
904
  # # => #<URI::HTTP http://github.com/ruby/ruby>
@@ -866,6 +906,8 @@ module Kernel
866
906
  # URI(uri)
867
907
  # # => #<URI::HTTP http://github.com/ruby/ruby>
868
908
  #
909
+ # You must require 'uri' to use this method.
910
+ #
869
911
  def URI(uri)
870
912
  if uri.is_a?(URI::Generic)
871
913
  uri
data/lib/uri/file.rb CHANGED
@@ -47,7 +47,7 @@ module URI
47
47
  # :path => '/ruby/src'})
48
48
  # uri2.to_s # => "file://host.example.com/ruby/src"
49
49
  #
50
- # uri3 = URI::File.build({:path => URI::escape('/path/my file.txt')})
50
+ # uri3 = URI::File.build({:path => URI::RFC2396_PARSER.escape('/path/my file.txt')})
51
51
  # uri3.to_s # => "file:///path/my%20file.txt"
52
52
  #
53
53
  def self.build(args)
data/lib/uri/generic.rb CHANGED
@@ -73,7 +73,7 @@ module URI
73
73
  #
74
74
  # At first, tries to create a new URI::Generic instance using
75
75
  # URI::Generic::build. But, if exception URI::InvalidComponentError is raised,
76
- # then it does URI::Escape.escape all URI components and tries again.
76
+ # then it does URI::RFC2396_PARSER.escape all URI components and tries again.
77
77
  #
78
78
  def self.build2(args)
79
79
  begin
@@ -126,9 +126,9 @@ module URI
126
126
  end
127
127
  end
128
128
  else
129
- component = self.class.component rescue ::URI::Generic::COMPONENT
129
+ component = self.component rescue ::URI::Generic::COMPONENT
130
130
  raise ArgumentError,
131
- "expected Array of or Hash of components of #{self.class} (#{component.join(', ')})"
131
+ "expected Array of or Hash of components of #{self} (#{component.join(', ')})"
132
132
  end
133
133
 
134
134
  tmp << nil
@@ -186,18 +186,18 @@ module URI
186
186
 
187
187
  if arg_check
188
188
  self.scheme = scheme
189
- self.userinfo = userinfo
190
189
  self.hostname = host
191
190
  self.port = port
191
+ self.userinfo = userinfo
192
192
  self.path = path
193
193
  self.query = query
194
194
  self.opaque = opaque
195
195
  self.fragment = fragment
196
196
  else
197
197
  self.set_scheme(scheme)
198
- self.set_userinfo(userinfo)
199
198
  self.set_host(host)
200
199
  self.set_port(port)
200
+ self.set_userinfo(userinfo)
201
201
  self.set_path(path)
202
202
  self.query = query
203
203
  self.set_opaque(opaque)
@@ -284,7 +284,7 @@ module URI
284
284
 
285
285
  # Returns the parser to be used.
286
286
  #
287
- # Unless a URI::Parser is defined, DEFAULT_PARSER is used.
287
+ # Unless the +parser+ is defined, DEFAULT_PARSER is used.
288
288
  #
289
289
  def parser
290
290
  if !defined?(@parser) || !@parser
@@ -315,7 +315,7 @@ module URI
315
315
  end
316
316
 
317
317
  #
318
- # Checks the scheme +v+ component against the URI::Parser Regexp for :SCHEME.
318
+ # Checks the scheme +v+ component against the +parser+ Regexp for :SCHEME.
319
319
  #
320
320
  def check_scheme(v)
321
321
  if v && parser.regexp[:SCHEME] !~ v
@@ -385,7 +385,7 @@ module URI
385
385
 
386
386
  #
387
387
  # Checks the user +v+ component for RFC2396 compliance
388
- # and against the URI::Parser Regexp for :USERINFO.
388
+ # and against the +parser+ Regexp for :USERINFO.
389
389
  #
390
390
  # Can not have a registry or opaque component defined,
391
391
  # with a user component defined.
@@ -409,7 +409,7 @@ module URI
409
409
 
410
410
  #
411
411
  # Checks the password +v+ component for RFC2396 compliance
412
- # and against the URI::Parser Regexp for :USERINFO.
412
+ # and against the +parser+ Regexp for :USERINFO.
413
413
  #
414
414
  # Can not have a registry or opaque component defined,
415
415
  # with a user component defined.
@@ -511,7 +511,7 @@ module URI
511
511
  user, password = split_userinfo(user)
512
512
  end
513
513
  @user = user
514
- @password = password if password
514
+ @password = password
515
515
 
516
516
  [@user, @password]
517
517
  end
@@ -522,7 +522,7 @@ module URI
522
522
  # See also URI::Generic.user=.
523
523
  #
524
524
  def set_user(v)
525
- set_userinfo(v, @password)
525
+ set_userinfo(v, nil)
526
526
  v
527
527
  end
528
528
  protected :set_user
@@ -574,6 +574,12 @@ module URI
574
574
  @password
575
575
  end
576
576
 
577
+ # Returns the authority info (array of user, password, host and
578
+ # port), if any is set. Or returns +nil+.
579
+ def authority
580
+ return @user, @password, @host, @port if @user || @password || @host || @port
581
+ end
582
+
577
583
  # Returns the user component after URI decoding.
578
584
  def decoded_user
579
585
  URI.decode_uri_component(@user) if @user
@@ -586,7 +592,7 @@ module URI
586
592
 
587
593
  #
588
594
  # Checks the host +v+ component for RFC2396 compliance
589
- # and against the URI::Parser Regexp for :HOST.
595
+ # and against the +parser+ Regexp for :HOST.
590
596
  #
591
597
  # Can not have a registry or opaque component defined,
592
598
  # with a host component defined.
@@ -615,6 +621,13 @@ module URI
615
621
  end
616
622
  protected :set_host
617
623
 
624
+ # Protected setter for the authority info (+user+, +password+, +host+
625
+ # and +port+). If +port+ is +nil+, +default_port+ will be set.
626
+ #
627
+ protected def set_authority(user, password, host, port = nil)
628
+ @user, @password, @host, @port = user, password, host, port || self.default_port
629
+ end
630
+
618
631
  #
619
632
  # == Args
620
633
  #
@@ -639,6 +652,7 @@ module URI
639
652
  def host=(v)
640
653
  check_host(v)
641
654
  set_host(v)
655
+ set_userinfo(nil)
642
656
  v
643
657
  end
644
658
 
@@ -675,7 +689,7 @@ module URI
675
689
 
676
690
  #
677
691
  # Checks the port +v+ component for RFC2396 compliance
678
- # and against the URI::Parser Regexp for :PORT.
692
+ # and against the +parser+ Regexp for :PORT.
679
693
  #
680
694
  # Can not have a registry or opaque component defined,
681
695
  # with a port component defined.
@@ -729,6 +743,7 @@ module URI
729
743
  def port=(v)
730
744
  check_port(v)
731
745
  set_port(v)
746
+ set_userinfo(nil)
732
747
  port
733
748
  end
734
749
 
@@ -748,7 +763,7 @@ module URI
748
763
 
749
764
  #
750
765
  # Checks the path +v+ component for RFC2396 compliance
751
- # and against the URI::Parser Regexp
766
+ # and against the +parser+ Regexp
752
767
  # for :ABS_PATH and :REL_PATH.
753
768
  #
754
769
  # Can not have a opaque component defined,
@@ -853,7 +868,7 @@ module URI
853
868
 
854
869
  #
855
870
  # Checks the opaque +v+ component for RFC2396 compliance and
856
- # against the URI::Parser Regexp for :OPAQUE.
871
+ # against the +parser+ Regexp for :OPAQUE.
857
872
  #
858
873
  # Can not have a host, port, user, or path component defined,
859
874
  # with an opaque component defined.
@@ -905,7 +920,7 @@ module URI
905
920
  end
906
921
 
907
922
  #
908
- # Checks the fragment +v+ component against the URI::Parser Regexp for :FRAGMENT.
923
+ # Checks the fragment +v+ component against the +parser+ Regexp for :FRAGMENT.
909
924
  #
910
925
  #
911
926
  # == Args
@@ -1121,7 +1136,7 @@ module URI
1121
1136
 
1122
1137
  base = self.dup
1123
1138
 
1124
- authority = rel.userinfo || rel.host || rel.port
1139
+ authority = rel.authority
1125
1140
 
1126
1141
  # RFC2396, Section 5.2, 2)
1127
1142
  if (rel.path.nil? || rel.path.empty?) && !authority && !rel.query
@@ -1134,9 +1149,7 @@ module URI
1134
1149
 
1135
1150
  # RFC2396, Section 5.2, 4)
1136
1151
  if authority
1137
- base.set_userinfo(rel.userinfo)
1138
- base.set_host(rel.host)
1139
- base.set_port(rel.port || base.default_port)
1152
+ base.set_authority(*authority)
1140
1153
  base.set_path(rel.path)
1141
1154
  elsif base.path && rel.path
1142
1155
  base.set_path(merge_path(base.path, rel.path))
@@ -1527,7 +1540,7 @@ module URI
1527
1540
  else
1528
1541
  unless proxy_uri = env[name]
1529
1542
  if proxy_uri = env[name.upcase]
1530
- warn 'The environment variable HTTP_PROXY is discouraged. Use http_proxy.', uplevel: 1
1543
+ warn 'The environment variable HTTP_PROXY is discouraged. Please use http_proxy instead.', uplevel: 1
1531
1544
  end
1532
1545
  end
1533
1546
  end
data/lib/uri/http.rb CHANGED
@@ -61,6 +61,18 @@ module URI
61
61
  super(tmp)
62
62
  end
63
63
 
64
+ # Do not allow empty host names, as they are not allowed by RFC 3986.
65
+ def check_host(v)
66
+ ret = super
67
+
68
+ if ret && v.empty?
69
+ raise InvalidComponentError,
70
+ "bad component(expected host component): #{v}"
71
+ end
72
+
73
+ ret
74
+ end
75
+
64
76
  #
65
77
  # == Description
66
78
  #
data/lib/uri/mailto.rb CHANGED
@@ -52,7 +52,11 @@ module URI
52
52
  HEADER_REGEXP = /\A(?<hfield>(?:%\h\h|[!$'-.0-;@-Z_a-z~])*=(?:%\h\h|[!$'-.0-;@-Z_a-z~])*)(?:&\g<hfield>)*\z/
53
53
  # practical regexp for email address
54
54
  # https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
55
- EMAIL_REGEXP = /\A[a-zA-Z0-9.!\#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\z/
55
+ EMAIL_REGEXP = %r[\A#{
56
+ atext = %q[(?:[a-zA-Z0-9!\#$%&'*+\/=?^_`{|}~-]+)]
57
+ }(?:\.#{atext})*@#{
58
+ label = %q[(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)]
59
+ }(?:\.#{label})*\z]
56
60
  # :startdoc:
57
61
 
58
62
  #
@@ -67,7 +67,7 @@ module URI
67
67
  #
68
68
  # == Synopsis
69
69
  #
70
- # URI::Parser.new([opts])
70
+ # URI::RFC2396_Parser.new([opts])
71
71
  #
72
72
  # == Args
73
73
  #
@@ -86,7 +86,7 @@ module URI
86
86
  #
87
87
  # == Examples
88
88
  #
89
- # p = URI::Parser.new(:ESCAPED => "(?:%[a-fA-F0-9]{2}|%u[a-fA-F0-9]{4})")
89
+ # p = URI::RFC2396_Parser.new(:ESCAPED => "(?:%[a-fA-F0-9]{2}|%u[a-fA-F0-9]{4})")
90
90
  # u = p.parse("http://example.jp/%uABCD") #=> #<URI::HTTP http://example.jp/%uABCD>
91
91
  # URI.parse(u.to_s) #=> raises URI::InvalidURIError
92
92
  #
@@ -108,12 +108,12 @@ module URI
108
108
 
109
109
  # The Hash of patterns.
110
110
  #
111
- # See also URI::Parser.initialize_pattern.
111
+ # See also #initialize_pattern.
112
112
  attr_reader :pattern
113
113
 
114
114
  # The Hash of Regexp.
115
115
  #
116
- # See also URI::Parser.initialize_regexp.
116
+ # See also #initialize_regexp.
117
117
  attr_reader :regexp
118
118
 
119
119
  # Returns a split URI against +regexp[:ABS_URI]+.
@@ -202,8 +202,7 @@ module URI
202
202
  #
203
203
  # == Usage
204
204
  #
205
- # p = URI::Parser.new
206
- # p.parse("ldap://ldap.example.com/dc=example?user=john")
205
+ # URI::RFC2396_PARSER.parse("ldap://ldap.example.com/dc=example?user=john")
207
206
  # #=> #<URI::LDAP ldap://ldap.example.com/dc=example?user=john>
208
207
  #
209
208
  def parse(uri)
@@ -244,7 +243,7 @@ module URI
244
243
  # If no +block+ given, then returns the result,
245
244
  # else it calls +block+ for each element in result.
246
245
  #
247
- # See also URI::Parser.make_regexp.
246
+ # See also #make_regexp.
248
247
  #
249
248
  def extract(str, schemes = nil)
250
249
  if block_given?
@@ -263,7 +262,7 @@ module URI
263
262
  unless schemes
264
263
  @regexp[:ABS_URI_REF]
265
264
  else
266
- /(?=#{Regexp.union(*schemes)}:)#{@pattern[:X_ABS_URI]}/x
265
+ /(?=(?i:#{Regexp.union(*schemes).source}):)#{@pattern[:X_ABS_URI]}/x
267
266
  end
268
267
  end
269
268
 
@@ -524,6 +523,8 @@ module URI
524
523
  ret
525
524
  end
526
525
 
526
+ # Returns +uri+ as-is if it is URI, or convert it to URI if it is
527
+ # a String.
527
528
  def convert_to_uri(uri)
528
529
  if uri.is_a?(URI::Generic)
529
530
  uri
data/lib/uri/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module URI
2
2
  # :stopdoc:
3
- VERSION_CODE = '010003'.freeze
4
- VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze
3
+ VERSION = '1.1.0'.freeze
4
+ VERSION_CODE = VERSION.split('.').map{|s| s.rjust(2, '0')}.join.freeze
5
5
  # :startdoc:
6
6
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uri
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akira Yamada
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-02-26 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies: []
13
12
  description: URI is a module providing classes to handle Uniform Resource Identifiers
14
13
  email:
@@ -48,7 +47,6 @@ metadata:
48
47
  documentation_uri: https://ruby.github.io/uri/
49
48
  homepage_uri: https://github.com/ruby/uri
50
49
  source_code_uri: https://github.com/ruby/uri
51
- post_install_message:
52
50
  rdoc_options: []
53
51
  require_paths:
54
52
  - lib
@@ -63,8 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
61
  - !ruby/object:Gem::Version
64
62
  version: '0'
65
63
  requirements: []
66
- rubygems_version: 3.5.11
67
- signing_key:
64
+ rubygems_version: 3.6.9
68
65
  specification_version: 4
69
66
  summary: URI is a module providing classes to handle Uniform Resource Identifiers
70
67
  test_files: []