addressable 2.2.7 → 2.2.8

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.
@@ -1,3 +1,8 @@
1
+ # Addressable 2.2.8
2
+ - fixed issues with dot segment removal code
3
+ - form encoding can now handle multiple values per key
4
+ - updated development environment
5
+
1
6
  # Addressable 2.2.7
2
7
  - fixed issues related to Addressable::URI#query_values=
3
8
  - the Addressable::URI.parse method is now polymorphic
data/Gemfile ADDED
@@ -0,0 +1,17 @@
1
+ source 'https://rubygems.org'
2
+
3
+ group :development do
4
+ gem 'launchy'
5
+ gem 'yard'
6
+ gem 'redcarpet'
7
+ gem 'rubyforge'
8
+ end
9
+
10
+ group :test, :development do
11
+ gem 'rake', '>= 0.7.3'
12
+ gem 'rspec', '>= 2.9.0'
13
+ end
14
+
15
+ gem 'idn', :platform => :mri_18
16
+
17
+ gemspec
@@ -0,0 +1,35 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ addressable (2.2.8)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.1.3)
10
+ idn (0.0.2)
11
+ launchy (2.1.0)
12
+ addressable (~> 2.2.6)
13
+ rake (0.9.2.2)
14
+ redcarpet (2.1.1)
15
+ rspec (2.9.0)
16
+ rspec-core (~> 2.9.0)
17
+ rspec-expectations (~> 2.9.0)
18
+ rspec-mocks (~> 2.9.0)
19
+ rspec-core (2.9.0)
20
+ rspec-expectations (2.9.1)
21
+ diff-lcs (~> 1.1.3)
22
+ rspec-mocks (2.9.0)
23
+ yard (0.8.0)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ addressable!
30
+ idn
31
+ launchy
32
+ rake (>= 0.7.3)
33
+ redcarpet
34
+ rspec (>= 2.9.0)
35
+ yard
File without changes
data/README.md CHANGED
@@ -7,6 +7,9 @@
7
7
  <dt>License</dt><dd>Apache 2.0</dd>
8
8
  </dl>
9
9
 
10
+ [![Build Status](https://secure.travis-ci.org/sporkmonger/addressable.png)](http://travis-ci.org/sporkmonger/addressable)
11
+ [![Dependency Status](https://gemnasium.com/sporkmonger/addressable.png)](https://gemnasium.com/sporkmonger/addressable)
12
+
10
13
  # Description
11
14
 
12
15
  Addressable is a replacement for the URI implementation that is part of
@@ -67,10 +70,14 @@ support for URI templates.
67
70
 
68
71
  # Install
69
72
 
70
- * sudo gem install addressable
73
+ $ sudo gem install addressable
71
74
 
72
75
  You may optionally turn on native IDN support by installing libidn and the
73
76
  idn gem:
74
77
 
75
- * brew install libidn
76
- * sudo gem install idn
78
+ $ sudo apt-get install idn # Debian/Ubuntu
79
+ $ sudo brew install libidn # OS X
80
+ $ sudo gem install idn
81
+
82
+ **NOTE:** Native IDN support appears to be broken in Ruby 1.9.x. The IDN gem
83
+ hasn't been updated in years.
data/Rakefile CHANGED
@@ -1,10 +1,5 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
- require 'rake/testtask'
4
- require 'rake/rdoctask'
5
- require 'rake/packagetask'
6
- require 'rake/gempackagetask'
7
- require 'spec/rake/spectask'
8
3
 
9
4
  require File.join(File.dirname(__FILE__), 'lib', 'addressable', 'version')
10
5
 
@@ -51,7 +51,7 @@ module Addressable
51
51
  end
52
52
 
53
53
  SLASH = '/'
54
- EMPTYSTR = ''
54
+ EMPTY_STR = ''
55
55
 
56
56
  URIREGEX = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/
57
57
 
@@ -120,10 +120,10 @@ module Addressable
120
120
  user = userinfo.strip[/^([^:]*):?/, 1]
121
121
  password = userinfo.strip[/:(.*)$/, 1]
122
122
  end
123
- host = authority.gsub(/^([^\[\]]*)@/, EMPTYSTR).gsub(/:([^:@\[\]]*?)$/, EMPTYSTR)
123
+ host = authority.gsub(/^([^\[\]]*)@/, EMPTY_STR).gsub(/:([^:@\[\]]*?)$/, EMPTY_STR)
124
124
  port = authority[/:([^:@\[\]]*?)$/, 1]
125
125
  end
126
- if port == EMPTYSTR
126
+ if port == EMPTY_STR
127
127
  port = nil
128
128
  end
129
129
 
@@ -187,7 +187,7 @@ module Addressable
187
187
  if new_host
188
188
  parsed.defer_validation do
189
189
  new_path = parsed.path.gsub(
190
- Regexp.new("^" + Regexp.escape(new_host)), EMPTYSTR)
190
+ Regexp.new("^" + Regexp.escape(new_host)), EMPTY_STR)
191
191
  parsed.host = new_host
192
192
  parsed.path = new_path
193
193
  parsed.scheme = hints[:scheme] unless parsed.scheme
@@ -237,7 +237,7 @@ module Addressable
237
237
  # Otherwise, convert to a String
238
238
  path = path.to_str.strip
239
239
 
240
- path.gsub!(/^file:\/?\/?/, EMPTYSTR) if path =~ /^file:\/?\/?/
240
+ path.gsub!(/^file:\/?\/?/, EMPTY_STR) if path =~ /^file:\/?\/?/
241
241
  path = SLASH + path if path =~ /^([a-zA-Z])[\|:]/
242
242
  uri = self.parse(path)
243
243
 
@@ -249,14 +249,14 @@ module Addressable
249
249
  uri.path.gsub!(/\\/, SLASH)
250
250
  if File.exists?(uri.path) &&
251
251
  File.stat(uri.path).directory?
252
- uri.path.gsub!(/\/$/, EMPTYSTR)
252
+ uri.path.gsub!(/\/$/, EMPTY_STR)
253
253
  uri.path = uri.path + '/'
254
254
  end
255
255
 
256
256
  # If the path is absolute, set the scheme and host.
257
257
  if uri.path =~ /^\//
258
258
  uri.scheme = "file"
259
- uri.host = EMPTYSTR
259
+ uri.host = EMPTY_STR
260
260
  end
261
261
  uri.normalize!
262
262
  end
@@ -619,9 +619,18 @@ module Addressable
619
619
  else
620
620
  raise TypeError, "Can't convert #{form_values.class} into Array."
621
621
  end
622
- form_values = form_values.map do |(key, value)|
623
- [key.to_s, value.to_s]
622
+
623
+ form_values = form_values.inject([]) do |accu, (key, value)|
624
+ if value.kind_of?(Array)
625
+ value.each do |v|
626
+ accu << [key.to_s, v.to_s]
627
+ end
628
+ else
629
+ accu << [key.to_s, value.to_s]
630
+ end
631
+ accu
624
632
  end
633
+
625
634
  if sort
626
635
  # Useful for OAuth and optimizing caching systems
627
636
  form_values = form_values.sort
@@ -832,7 +841,7 @@ module Addressable
832
841
 
833
842
  # You can't have a nil user with a non-nil password
834
843
  if password != nil
835
- @user = EMPTYSTR if @user.nil?
844
+ @user = EMPTY_STR if @user.nil?
836
845
  end
837
846
 
838
847
  # Reset dependant values
@@ -887,7 +896,7 @@ module Addressable
887
896
  @password ||= nil
888
897
  @user ||= nil
889
898
  if @password != nil
890
- @user = EMPTYSTR if @user.nil?
899
+ @user = EMPTY_STR if @user.nil?
891
900
  end
892
901
 
893
902
  # Reset dependant values
@@ -992,7 +1001,7 @@ module Addressable
992
1001
  end
993
1002
  result
994
1003
  else
995
- EMPTYSTR
1004
+ EMPTY_STR
996
1005
  end
997
1006
  else
998
1007
  nil
@@ -1081,7 +1090,7 @@ module Addressable
1081
1090
  new_password = new_userinfo.strip[/:(.*)$/, 1]
1082
1091
  end
1083
1092
  new_host =
1084
- new_authority.gsub(/^([^\[\]]*)@/, EMPTYSTR).gsub(/:([^:@\[\]]*?)$/, EMPTYSTR)
1093
+ new_authority.gsub(/^([^\[\]]*)@/, EMPTY_STR).gsub(/:([^:@\[\]]*?)$/, EMPTY_STR)
1085
1094
  new_port =
1086
1095
  new_authority[/:([^:@\[\]]*?)$/, 1]
1087
1096
  end
@@ -1269,7 +1278,7 @@ module Addressable
1269
1278
  #
1270
1279
  # @return [String] The path component.
1271
1280
  def path
1272
- return instance_variable_defined?(:@path) ? @path : EMPTYSTR
1281
+ return instance_variable_defined?(:@path) ? @path : EMPTY_STR
1273
1282
  end
1274
1283
 
1275
1284
  NORMPATH = /^(?!\/)[^\/:]*:.*$/
@@ -1310,7 +1319,7 @@ module Addressable
1310
1319
  if new_path && !new_path.respond_to?(:to_str)
1311
1320
  raise TypeError, "Can't convert #{new_path.class} into String."
1312
1321
  end
1313
- @path = (new_path || EMPTYSTR).to_str
1322
+ @path = (new_path || EMPTY_STR).to_str
1314
1323
  if !@path.empty? && @path[0..0] != SLASH && host != nil
1315
1324
  @path = "/#{@path}"
1316
1325
  end
@@ -1327,7 +1336,7 @@ module Addressable
1327
1336
  # @return [String] The path's basename.
1328
1337
  def basename
1329
1338
  # Path cannot be nil
1330
- return File.basename(self.path).gsub(/;[^\/]*$/, EMPTYSTR)
1339
+ return File.basename(self.path).gsub(/;[^\/]*$/, EMPTY_STR)
1331
1340
  end
1332
1341
 
1333
1342
  ##
@@ -1572,7 +1581,7 @@ module Addressable
1572
1581
  return nil if self.absolute? && self.scheme !~ /^https?$/
1573
1582
  return (
1574
1583
  (!self.path.empty? ? self.path : SLASH) +
1575
- (self.query ? "?#{self.query}" : EMPTYSTR)
1584
+ (self.query ? "?#{self.query}" : EMPTY_STR)
1576
1585
  )
1577
1586
  end
1578
1587
 
@@ -1732,7 +1741,7 @@ module Addressable
1732
1741
  joined_path = URI.normalize_path(uri.path)
1733
1742
  else
1734
1743
  base_path = self.path.dup
1735
- base_path = EMPTYSTR if base_path == nil
1744
+ base_path = EMPTY_STR if base_path == nil
1736
1745
  base_path = URI.normalize_path(base_path)
1737
1746
 
1738
1747
  # Section 5.2.3 of RFC 3986
@@ -1741,7 +1750,7 @@ module Addressable
1741
1750
  if base_path =~ /\//
1742
1751
  base_path.gsub!(/\/[^\/]+$/, SLASH)
1743
1752
  else
1744
- base_path = EMPTYSTR
1753
+ base_path = EMPTY_STR
1745
1754
  end
1746
1755
 
1747
1756
  # If the base path is empty and an authority segment has been
@@ -1905,7 +1914,7 @@ module Addressable
1905
1914
  else
1906
1915
  if uri.path != SLASH
1907
1916
  components[:path].gsub!(
1908
- Regexp.new("^" + Regexp.escape(uri.path)), EMPTYSTR)
1917
+ Regexp.new("^" + Regexp.escape(uri.path)), EMPTY_STR)
1909
1918
  end
1910
1919
  end
1911
1920
  end
@@ -2184,21 +2193,20 @@ module Addressable
2184
2193
  end
2185
2194
 
2186
2195
  private
2196
+ SELF_REF = '.'
2197
+ PARENT = '..'
2198
+
2199
+ RULE_2A = /\/\.\/|\/\.$/
2200
+ RULE_2B_2C = /\/([^\/]*)\/\.\.\/|\/([^\/]*)\/\.\.$/
2201
+ RULE_2D = /^\.\.?\/?/
2202
+ RULE_PREFIXED_PARENT = /^\/\.\.?\/|^(\/\.\.?)+\/?$/
2203
+
2187
2204
  ##
2188
2205
  # Resolves paths to their simplest form.
2189
2206
  #
2190
2207
  # @param [String] path The path to normalize.
2191
2208
  #
2192
2209
  # @return [String] The normalized path.
2193
-
2194
- PARENT1 = '.'
2195
- PARENT2 = '..'
2196
-
2197
- NPATH1 = /\/\.\/|\/\.$/
2198
- NPATH2 = /\/([^\/]+)\/\.\.\/|\/([^\/]+)\/\.\.$/
2199
- NPATH3 = /^\.\.?\/?/
2200
- NPATH4 = /^\/\.\.?\/|^(\/\.\.?)+\/?$/
2201
-
2202
2210
  def self.normalize_path(path)
2203
2211
  # Section 5.2.4 of RFC 3986
2204
2212
 
@@ -2206,16 +2214,23 @@ module Addressable
2206
2214
  normalized_path = path.dup
2207
2215
  begin
2208
2216
  mod = nil
2209
- mod ||= normalized_path.gsub!(NPATH1, SLASH)
2210
-
2211
- parent = normalized_path.match(NPATH2)
2212
- if parent && ((parent[1] != PARENT1 && parent[1] != PARENT2) \
2213
- || (parent[2] != PARENT1 && parent[2] != PARENT2))
2214
- mod ||= normalized_path.gsub!(/\/#{Regexp.escape(parent[1].to_s)}\/\.\.\/|(\/#{Regexp.escape(parent[2].to_s)}\/\.\.$)/, SLASH)
2217
+ mod ||= normalized_path.gsub!(RULE_2A, SLASH)
2218
+
2219
+ pair = normalized_path.match(RULE_2B_2C)
2220
+ parent, current = pair[1], pair[2] if pair
2221
+ if pair && ((parent != SELF_REF && parent != PARENT) ||
2222
+ (current != SELF_REF && current != PARENT))
2223
+ mod ||= normalized_path.gsub!(
2224
+ Regexp.new(
2225
+ "/#{Regexp.escape(parent.to_s)}/\\.\\./|" +
2226
+ "(/#{Regexp.escape(current.to_s)}/\\.\\.$)"
2227
+ ), SLASH
2228
+ )
2215
2229
  end
2216
2230
 
2217
- mod ||= normalized_path.gsub!(NPATH3, EMPTYSTR)
2218
- mod ||= normalized_path.gsub!(NPATH4, SLASH)
2231
+ mod ||= normalized_path.gsub!(RULE_2D, EMPTY_STR)
2232
+ # Non-standard, removes prefixed dotted segments from path.
2233
+ mod ||= normalized_path.gsub!(RULE_PREFIXED_PARENT, SLASH)
2219
2234
  end until mod.nil?
2220
2235
 
2221
2236
  return normalized_path
@@ -22,7 +22,7 @@ if !defined?(Addressable::VERSION)
22
22
  module VERSION
23
23
  MAJOR = 2
24
24
  MINOR = 2
25
- TINY = 7
25
+ TINY = 8
26
26
 
27
27
  STRING = [MAJOR, MINOR, TINY].join('.')
28
28
  end
@@ -1920,6 +1920,51 @@ describe Addressable::URI, "when parsed from " +
1920
1920
  end
1921
1921
  end
1922
1922
 
1923
+ describe Addressable::URI, "when parsed from '/a/b/c/./../../g'" do
1924
+ before do
1925
+ @uri = Addressable::URI.parse("/a/b/c/./../../g")
1926
+ end
1927
+
1928
+ it "should not be considered to be in normal form" do
1929
+ @uri.normalize.should_not be_eql(@uri)
1930
+ end
1931
+
1932
+ # Section 5.2.4 of RFC 3986
1933
+ it "should normalize to '/a/g'" do
1934
+ @uri.normalize.should === "/a/g"
1935
+ end
1936
+ end
1937
+
1938
+ describe Addressable::URI, "when parsed from 'mid/content=5/../6'" do
1939
+ before do
1940
+ @uri = Addressable::URI.parse("mid/content=5/../6")
1941
+ end
1942
+
1943
+ it "should not be considered to be in normal form" do
1944
+ @uri.normalize.should_not be_eql(@uri)
1945
+ end
1946
+
1947
+ # Section 5.2.4 of RFC 3986
1948
+ it "should normalize to 'mid/6'" do
1949
+ @uri.normalize.should === "mid/6"
1950
+ end
1951
+ end
1952
+
1953
+ describe Addressable::URI, "when parsed from " +
1954
+ "'http://www.example.com///../'" do
1955
+ before do
1956
+ @uri = Addressable::URI.parse('http://www.example.com///../')
1957
+ end
1958
+
1959
+ it "should not be considered to be in normal form" do
1960
+ @uri.normalize.should_not be_eql(@uri)
1961
+ end
1962
+
1963
+ it "should normalize to 'http://www.example.com//'" do
1964
+ @uri.normalize.should === "http://www.example.com//"
1965
+ end
1966
+ end
1967
+
1923
1968
  describe Addressable::URI, "when parsed from " +
1924
1969
  "'http://example.com/path/to/resource/'" do
1925
1970
  before do
@@ -4286,7 +4331,7 @@ end
4286
4331
  describe Addressable::URI, "when form encoding a hash" do
4287
4332
  it "should result in correct percent encoded sequence" do
4288
4333
  Addressable::URI.form_encode(
4289
- {"&one" => "/1", "=two" => "?2", ":three" => "#3"}
4334
+ [["&one", "/1"], ["=two", "?2"], [":three", "#3"]]
4290
4335
  ).should == "%26one=%2F1&%3Dtwo=%3F2&%3Athree=%233"
4291
4336
  end
4292
4337
 
@@ -4302,6 +4347,12 @@ describe Addressable::URI, "when form encoding a hash" do
4302
4347
  ).should == "key="
4303
4348
  end
4304
4349
 
4350
+ it "should result in correct percent encoded sequence" do
4351
+ Addressable::URI.form_encode(
4352
+ {"q" => ["one", "two", "three"]}
4353
+ ).should == "q=one&q=two&q=three"
4354
+ end
4355
+
4305
4356
  it "should result in correctly encoded newlines" do
4306
4357
  Addressable::URI.form_encode(
4307
4358
  {"text" => "one\ntwo\rthree\r\nfour\n\r"}
@@ -4818,7 +4869,7 @@ describe Addressable::URI, "when assigning query values" do
4818
4869
  end
4819
4870
 
4820
4871
  it "should preserve query string order" do
4821
- query_string = (('a'..'z').to_a.shuffle.map { |e| "#{e}=#{e}" }).join("&")
4872
+ query_string = (('a'..'z').to_a.reverse.map { |e| "#{e}=#{e}" }).join("&")
4822
4873
  @uri.query = query_string
4823
4874
  original_uri = @uri.to_s
4824
4875
  @uri.query_values = @uri.query_values(:notation => :flat_array)
@@ -1,4 +1,4 @@
1
- require "rake/gempackagetask"
1
+ require "rubygems/package_task"
2
2
 
3
3
  namespace :gem do
4
4
  GEM_SPEC = Gem::Specification.new do |s|
@@ -19,9 +19,8 @@ namespace :gem do
19
19
  end
20
20
 
21
21
  s.add_development_dependency("rake", ">= 0.7.3")
22
- s.add_development_dependency("rspec", ">= 1.0.8")
22
+ s.add_development_dependency("rspec", ">= 2.9.0")
23
23
  s.add_development_dependency("launchy", ">= 0.3.2")
24
- s.add_development_dependency("diff-lcs", ">= 1.1.2")
25
24
 
26
25
  s.require_path = "lib"
27
26
 
@@ -31,7 +30,7 @@ namespace :gem do
31
30
  s.rubyforge_project = RUBY_FORGE_PROJECT
32
31
  end
33
32
 
34
- Rake::GemPackageTask.new(GEM_SPEC) do |p|
33
+ Gem::PackageTask.new(GEM_SPEC) do |p|
35
34
  p.gem_spec = GEM_SPEC
36
35
  p.need_tar = true
37
36
  p.need_zip = true
@@ -10,7 +10,7 @@ namespace :git do
10
10
 
11
11
  desc "Create a new tag in the Git repository"
12
12
  task :create do
13
- changelog = File.open("CHANGELOG", "r") { |file| file.read }
13
+ changelog = File.open("CHANGELOG.md", "r") { |file| file.read }
14
14
  puts "-" * 80
15
15
  puts changelog
16
16
  puts "-" * 80
@@ -1,8 +1,9 @@
1
+ require "rspec/core/rake_task"
2
+
1
3
  namespace :spec do
2
- Spec::Rake::SpecTask.new(:rcov) do |t|
3
- t.libs = %w[lib spec]
4
- t.spec_files = FileList['spec/**/*_spec.rb']
5
- t.spec_opts = ['--color', '--format', 'specdoc']
4
+ RSpec::Core::RakeTask.new(:rcov) do |t|
5
+ t.pattern = FileList['spec/**/*_spec.rb']
6
+ t.rspec_opts = ['--color', '--format', 'documentation']
6
7
 
7
8
  t.rcov = RCOV_ENABLED
8
9
  t.rcov_opts = [
@@ -17,31 +18,28 @@ namespace :spec do
17
18
  ]
18
19
  end
19
20
 
20
- Spec::Rake::SpecTask.new(:normal) do |t|
21
- t.libs = %w[lib spec]
22
- t.spec_files = FileList['spec/**/*_spec.rb'].exclude(/compat/)
23
- t.spec_opts = ['--color', '--format', 'specdoc']
21
+ RSpec::Core::RakeTask.new(:normal) do |t|
22
+ t.pattern = FileList['spec/**/*_spec.rb'].exclude(/compat/)
23
+ t.rspec_opts = ['--color', '--format', 'documentation']
24
24
  t.rcov = false
25
25
  end
26
26
 
27
- Spec::Rake::SpecTask.new(:all) do |t|
28
- t.libs = %w[lib spec]
29
- t.spec_files = FileList['spec/**/*_spec.rb']
30
- t.spec_opts = ['--color', '--format', 'specdoc']
27
+ RSpec::Core::RakeTask.new(:all) do |t|
28
+ t.pattern = FileList['spec/**/*_spec.rb']
29
+ t.rspec_opts = ['--color', '--format', 'documentation']
31
30
  t.rcov = false
32
31
  end
33
32
 
34
33
  desc "Generate HTML Specdocs for all specs"
35
- Spec::Rake::SpecTask.new(:specdoc) do |t|
34
+ RSpec::Core::RakeTask.new(:specdoc) do |t|
36
35
  specdoc_path = File.expand_path(
37
- File.join(File.dirname(__FILE__), '..', 'specdoc')
36
+ File.join(File.dirname(__FILE__), '..', 'documentation')
38
37
  )
39
38
  Dir.mkdir(specdoc_path) if !File.exist?(specdoc_path)
40
39
 
41
40
  output_file = File.join(specdoc_path, 'index.html')
42
- t.libs = %w[lib spec]
43
- t.spec_files = FileList['spec/**/*_spec.rb']
44
- t.spec_opts = ["--format", "\"html:#{output_file}\"", "--diff"]
41
+ t.pattern = FileList['spec/**/*_spec.rb']
42
+ t.rspec_opts = ["--format", "\"html:#{output_file}\"", "--diff"]
45
43
  t.fail_on_error = false
46
44
  end
47
45
 
@@ -13,7 +13,7 @@ namespace :gem do
13
13
  rf.login
14
14
 
15
15
  c = rf.userconfig
16
- changelog = File.open("CHANGELOG") { |file| file.read }
16
+ changelog = File.open("CHANGELOG.md") { |file| file.read }
17
17
  c['release_changes'] = changelog
18
18
  c['preformatted'] = true
19
19
 
@@ -10,7 +10,8 @@ begin
10
10
  yardoc.name = "yard"
11
11
  yardoc.options = ["--verbose", "--markup", "markdown"]
12
12
  yardoc.files = FileList[
13
- "lib/**/*.rb", "ext/**/*.c", "README.md", "CHANGELOG", "LICENSE"
13
+ "lib/**/*.rb", "ext/**/*.c",
14
+ "README.md", "CHANGELOG.md", "LICENSE.txt"
14
15
  ].exclude(/idna/)
15
16
  end
16
17
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 2
7
7
  - 2
8
- - 7
9
- version: 2.2.7
8
+ - 8
9
+ version: 2.2.8
10
10
  platform: ruby
11
11
  authors:
12
12
  - Bob Aman
@@ -14,13 +14,14 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2012-02-16 00:00:00 +03:00
17
+ date: 2012-05-02 00:00:00 +03:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rake
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
@@ -35,20 +36,22 @@ dependencies:
35
36
  name: rspec
36
37
  prerelease: false
37
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
38
40
  requirements:
39
41
  - - ">="
40
42
  - !ruby/object:Gem::Version
41
43
  segments:
42
- - 1
44
+ - 2
45
+ - 9
43
46
  - 0
44
- - 8
45
- version: 1.0.8
47
+ version: 2.9.0
46
48
  type: :development
47
49
  version_requirements: *id002
48
50
  - !ruby/object:Gem::Dependency
49
51
  name: launchy
50
52
  prerelease: false
51
53
  requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
52
55
  requirements:
53
56
  - - ">="
54
57
  - !ruby/object:Gem::Version
@@ -59,20 +62,6 @@ dependencies:
59
62
  version: 0.3.2
60
63
  type: :development
61
64
  version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: diff-lcs
64
- prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- segments:
70
- - 1
71
- - 1
72
- - 2
73
- version: 1.1.2
74
- type: :development
75
- version_requirements: *id004
76
65
  description: |
77
66
  Addressable is a replacement for the URI implementation that is part of
78
67
  Ruby's standard library. It more closely conforms to the relevant RFCs and
@@ -100,13 +89,14 @@ files:
100
89
  - tasks/gem.rake
101
90
  - tasks/git.rake
102
91
  - tasks/metrics.rake
103
- - tasks/rdoc.rake
92
+ - tasks/rspec.rake
104
93
  - tasks/rubyforge.rake
105
- - tasks/spec.rake
106
94
  - tasks/yard.rake
107
95
  - website/index.html
108
- - CHANGELOG
109
- - LICENSE
96
+ - CHANGELOG.md
97
+ - Gemfile
98
+ - Gemfile.lock
99
+ - LICENSE.txt
110
100
  - Rakefile
111
101
  - README.md
112
102
  has_rdoc: true
@@ -120,6 +110,7 @@ rdoc_options:
120
110
  require_paths:
121
111
  - lib
122
112
  required_ruby_version: !ruby/object:Gem::Requirement
113
+ none: false
123
114
  requirements:
124
115
  - - ">="
125
116
  - !ruby/object:Gem::Version
@@ -127,6 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
118
  - 0
128
119
  version: "0"
129
120
  required_rubygems_version: !ruby/object:Gem::Requirement
121
+ none: false
130
122
  requirements:
131
123
  - - ">="
132
124
  - !ruby/object:Gem::Version
@@ -136,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
128
  requirements: []
137
129
 
138
130
  rubyforge_project: addressable
139
- rubygems_version: 1.3.6
131
+ rubygems_version: 1.3.7
140
132
  signing_key:
141
133
  specification_version: 3
142
134
  summary: URI Implementation
@@ -1,26 +0,0 @@
1
- require "rake/rdoctask"
2
-
3
- namespace :doc do
4
- desc "Generate RDoc documentation"
5
- Rake::RDocTask.new do |rdoc|
6
- rdoc.rdoc_dir = "doc"
7
- rdoc.title = "#{PKG_NAME}-#{PKG_VERSION} Documentation"
8
- rdoc.options << "--line-numbers" << "--inline-source" <<
9
- "--accessor" << "cattr_accessor=object" << "--charset" << "utf-8"
10
- rdoc.template = "#{ENV["template"]}.rb" if ENV["template"]
11
- rdoc.rdoc_files.include("README.md", "CHANGELOG", "LICENSE")
12
- rdoc.rdoc_files.include("lib/**/*.rb")
13
- end
14
-
15
- desc "Generate ri locally for testing"
16
- task :ri do
17
- sh "rdoc --ri -o ri ."
18
- end
19
-
20
- desc "Remove ri products"
21
- task :clobber_ri do
22
- rm_r "ri" rescue nil
23
- end
24
- end
25
-
26
- task "clobber" => ["doc:clobber_rdoc", "doc:clobber_ri"]