addressable 2.2.4 → 2.2.5

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,34 +1,28 @@
1
1
  # encoding:utf-8
2
2
  #--
3
- # Addressable, Copyright (c) 2006-2010 Bob Aman
3
+ # Copyright (C) 2006-2011 Bob Aman
4
4
  #
5
- # Permission is hereby granted, free of charge, to any person obtaining
6
- # a copy of this software and associated documentation files (the
7
- # "Software"), to deal in the Software without restriction, including
8
- # without limitation the rights to use, copy, modify, merge, publish,
9
- # distribute, sublicense, and/or sell copies of the Software, and to
10
- # permit persons to whom the Software is furnished to do so, subject to
11
- # the following conditions:
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
12
8
  #
13
- # The above copyright notice and this permission notice shall be
14
- # included in all copies or substantial portions of the Software.
9
+ # http://www.apache.org/licenses/LICENSE-2.0
15
10
  #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
23
16
  #++
24
17
 
18
+
25
19
  # Used to prevent the class/module from being loaded more than once
26
20
  if !defined?(Addressable::VERSION)
27
21
  module Addressable
28
- module VERSION #:nodoc:
22
+ module VERSION
29
23
  MAJOR = 2
30
24
  MINOR = 2
31
- TINY = 4
25
+ TINY = 5
32
26
 
33
27
  STRING = [MAJOR, MINOR, TINY].join('.')
34
28
  end
@@ -1,30 +1,24 @@
1
- # encoding:utf-8
2
- #--
3
- # Addressable, Copyright (c) 2006-2007 Bob Aman
1
+ # Copyright (C) 2006-2011 Bob Aman
4
2
  #
5
- # Permission is hereby granted, free of charge, to any person obtaining
6
- # a copy of this software and associated documentation files (the
7
- # "Software"), to deal in the Software without restriction, including
8
- # without limitation the rights to use, copy, modify, merge, publish,
9
- # distribute, sublicense, and/or sell copies of the Software, and to
10
- # permit persons to whom the Software is furnished to do so, subject to
11
- # the following conditions:
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
12
6
  #
13
- # The above copyright notice and this permission notice shall be
14
- # included in all copies or substantial portions of the Software.
7
+ # http://www.apache.org/licenses/LICENSE-2.0
15
8
  #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
- #++
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+
16
+ # Have to use RubyGems to load the idn gem.
17
+ require "rubygems"
24
18
 
25
19
  require "addressable/idna"
26
20
 
27
- describe Addressable::IDNA, "when converting from unicode to ASCII" do
21
+ shared_examples_for "converting from unicode to ASCII" do
28
22
  it "should convert 'www.google.com' correctly" do
29
23
  Addressable::IDNA.to_ascii("www.google.com").should == "www.google.com"
30
24
  end
@@ -131,7 +125,7 @@ describe Addressable::IDNA, "when converting from unicode to ASCII" do
131
125
  end
132
126
  end
133
127
 
134
- describe Addressable::IDNA, "when converting from ASCII to unicode" do
128
+ shared_examples_for "converting from ASCII to unicode" do
135
129
  it "should convert 'www.google.com' correctly" do
136
130
  Addressable::IDNA.to_unicode("www.google.com").should == "www.google.com"
137
131
  end
@@ -192,3 +186,30 @@ describe Addressable::IDNA, "when converting from ASCII to unicode" do
192
186
  ).should == "\341\206\265"
193
187
  end
194
188
  end
189
+
190
+ describe Addressable::IDNA, "when using the pure-Ruby implementation" do
191
+ before do
192
+ Addressable.send(:remove_const, :IDNA)
193
+ load "addressable/idna/pure.rb"
194
+ end
195
+
196
+ it_should_behave_like "converting from unicode to ASCII"
197
+ it_should_behave_like "converting from ASCII to unicode"
198
+ end
199
+
200
+ begin
201
+ require "idn"
202
+
203
+ describe Addressable::IDNA, "when using the native-code implementation" do
204
+ before do
205
+ Addressable.send(:remove_const, :IDNA)
206
+ load "addressable/idna/native.rb"
207
+ end
208
+
209
+ it_should_behave_like "converting from unicode to ASCII"
210
+ it_should_behave_like "converting from ASCII to unicode"
211
+ end
212
+ rescue LoadError
213
+ # Cannot test the native implementation without libidn support.
214
+ warn('Could not load native IDN implementation.')
215
+ end
@@ -1,26 +1,17 @@
1
- # encoding:utf-8
2
- #--
3
- # Addressable, Copyright (c) 2006-2007 Bob Aman
1
+ # Copyright (C) 2006-2011 Bob Aman
4
2
  #
5
- # Permission is hereby granted, free of charge, to any person obtaining
6
- # a copy of this software and associated documentation files (the
7
- # "Software"), to deal in the Software without restriction, including
8
- # without limitation the rights to use, copy, modify, merge, publish,
9
- # distribute, sublicense, and/or sell copies of the Software, and to
10
- # permit persons to whom the Software is furnished to do so, subject to
11
- # the following conditions:
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
12
6
  #
13
- # The above copyright notice and this permission notice shall be
14
- # included in all copies or substantial portions of the Software.
7
+ # http://www.apache.org/licenses/LICENSE-2.0
15
8
  #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
- #++
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
24
15
 
25
16
  require "addressable/template"
26
17
 
@@ -1,26 +1,17 @@
1
- # encoding: utf-8
2
- #--
3
- # Addressable, Copyright (c) 2006-2007 Bob Aman
1
+ # Copyright (C) 2006-2011 Bob Aman
4
2
  #
5
- # Permission is hereby granted, free of charge, to any person obtaining
6
- # a copy of this software and associated documentation files (the
7
- # "Software"), to deal in the Software without restriction, including
8
- # without limitation the rights to use, copy, modify, merge, publish,
9
- # distribute, sublicense, and/or sell copies of the Software, and to
10
- # permit persons to whom the Software is furnished to do so, subject to
11
- # the following conditions:
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
12
6
  #
13
- # The above copyright notice and this permission notice shall be
14
- # included in all copies or substantial portions of the Software.
7
+ # http://www.apache.org/licenses/LICENSE-2.0
15
8
  #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
- #++
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
24
15
 
25
16
  require "addressable/uri"
26
17
 
@@ -328,18 +319,24 @@ describe Addressable::URI, "when created with a path that hasn't been " +
328
319
  end
329
320
 
330
321
  describe Addressable::URI, "when parsed from an Addressable::URI object" do
331
- it "should return the object" do
332
- uri = Addressable::URI.parse("http://example.com/")
333
- (lambda do
334
- Addressable::URI.parse(uri).object_id.should == uri.object_id
335
- end).should_not raise_error
322
+ it "should not have unexpected side-effects" do
323
+ original_uri = Addressable::URI.parse("http://example.com/")
324
+ new_uri = Addressable::URI.parse(original_uri)
325
+ new_uri.host = 'www.example.com'
326
+ new_uri.host.should == 'www.example.com'
327
+ new_uri.to_s.should == 'http://www.example.com/'
328
+ original_uri.host.should == 'example.com'
329
+ original_uri.to_s.should == 'http://example.com/'
336
330
  end
337
331
 
338
- it "should return the object" do
339
- uri = Addressable::URI.parse("http://example.com/")
340
- (lambda do
341
- Addressable::URI.heuristic_parse(uri).object_id.should == uri.object_id
342
- end).should_not raise_error
332
+ it "should not have unexpected side-effects" do
333
+ original_uri = Addressable::URI.parse("http://example.com/")
334
+ new_uri = Addressable::URI.heuristic_parse(original_uri)
335
+ new_uri.host = 'www.example.com'
336
+ new_uri.host.should == 'www.example.com'
337
+ new_uri.to_s.should == 'http://www.example.com/'
338
+ original_uri.host.should == 'example.com'
339
+ original_uri.to_s.should == 'http://example.com/'
343
340
  end
344
341
  end
345
342
 
@@ -2662,6 +2659,71 @@ describe Addressable::URI, "when parsed from " +
2662
2659
  end
2663
2660
  end
2664
2661
 
2662
+ describe Addressable::URI, "when parsed from " +
2663
+ "'http://example.com/search?q=Q%26A'" do
2664
+
2665
+ before do
2666
+ @uri = Addressable::URI.parse("http://example.com/search?q=Q%26A")
2667
+ end
2668
+
2669
+ it "should have a query of 'q=Q%26A'" do
2670
+ @uri.query.should == "q=Q%26A"
2671
+ end
2672
+
2673
+ it "should have query_values of {'q' => 'Q&A'}" do
2674
+ @uri.query_values.should == { 'q' => 'Q&A' }
2675
+ end
2676
+
2677
+ it "should normalize to the original uri (with the ampersand properly percent-encoded)" do
2678
+ @uri.normalize.to_s.should == "http://example.com/search?q=Q%26A"
2679
+ end
2680
+ end
2681
+
2682
+ describe Addressable::URI, "when parsed from " +
2683
+ "'http://example.com/?&x=b'" do
2684
+ before do
2685
+ @uri = Addressable::URI.parse("http://example.com/?&x=b")
2686
+ end
2687
+
2688
+ it "should have a query of '&x=b'" do
2689
+ @uri.query.should == "&x=b"
2690
+ end
2691
+
2692
+ it "should have query_values of {'x' => 'b'}" do
2693
+ @uri.query_values.should == {'x' => 'b'}
2694
+ end
2695
+ end
2696
+
2697
+ describe Addressable::URI, "when parsed from " +
2698
+ "'http://example.com/?&&x=b'" do
2699
+ before do
2700
+ @uri = Addressable::URI.parse("http://example.com/?&&x=b")
2701
+ end
2702
+
2703
+ it "should have a query of '&&x=b'" do
2704
+ @uri.query.should == "&&x=b"
2705
+ end
2706
+
2707
+ it "should have query_values of {'x' => 'b'}" do
2708
+ @uri.query_values.should == {'x' => 'b'}
2709
+ end
2710
+ end
2711
+
2712
+ describe Addressable::URI, "when parsed from " +
2713
+ "'http://example.com/?q=a&&x=b'" do
2714
+ before do
2715
+ @uri = Addressable::URI.parse("http://example.com/?q=a&&x=b")
2716
+ end
2717
+
2718
+ it "should have a query of 'q=a&&x=b'" do
2719
+ @uri.query.should == "q=a&&x=b"
2720
+ end
2721
+
2722
+ it "should have query_values of {'q' => 'a, 'x' => 'b'}" do
2723
+ @uri.query_values.should == {'q' => 'a', 'x' => 'b'}
2724
+ end
2725
+ end
2726
+
2665
2727
  describe Addressable::URI, "when parsed from " +
2666
2728
  "'http://example.com/?q&&x=b'" do
2667
2729
  before do
@@ -10,8 +10,8 @@ namespace :gem do
10
10
  s.files = PKG_FILES.to_a
11
11
 
12
12
  s.has_rdoc = true
13
- s.extra_rdoc_files = %w( README )
14
- s.rdoc_options.concat ["--main", "README"]
13
+ s.extra_rdoc_files = %w( README.md )
14
+ s.rdoc_options.concat ["--main", "README.md"]
15
15
 
16
16
  if !s.respond_to?(:add_development_dependency)
17
17
  puts "Cannot build Gem with this version of RubyGems."
@@ -8,7 +8,7 @@ namespace :doc do
8
8
  rdoc.options << "--line-numbers" << "--inline-source" <<
9
9
  "--accessor" << "cattr_accessor=object" << "--charset" << "utf-8"
10
10
  rdoc.template = "#{ENV["template"]}.rb" if ENV["template"]
11
- rdoc.rdoc_files.include("README", "CHANGELOG", "LICENSE")
11
+ rdoc.rdoc_files.include("README.md", "CHANGELOG", "LICENSE")
12
12
  rdoc.rdoc_files.include("lib/**/*.rb")
13
13
  end
14
14
 
@@ -3,13 +3,13 @@ namespace :spec do
3
3
  t.libs = %w[lib spec]
4
4
  t.spec_files = FileList['spec/**/*_spec.rb']
5
5
  t.spec_opts = ['--color', '--format', 'specdoc']
6
-
6
+
7
7
  t.rcov = RCOV_ENABLED
8
8
  t.rcov_opts = [
9
9
  '--exclude', 'spec',
10
10
  '--exclude', '1\\.8\\/gems',
11
11
  '--exclude', '1\\.9\\/gems',
12
- '--exclude', 'addressable\\/idna\\.rb', # unicode tables too big
12
+ '--exclude', 'addressable\\/idna' # environment dependant
13
13
  ]
14
14
  end
15
15
 
@@ -22,7 +22,9 @@ namespace :spec do
22
22
 
23
23
  desc "Generate HTML Specdocs for all specs"
24
24
  Spec::Rake::SpecTask.new(:specdoc) do |t|
25
- specdoc_path = File.expand_path(File.join(File.dirname(__FILE__), '..', 'specdoc'))
25
+ specdoc_path = File.expand_path(
26
+ File.join(File.dirname(__FILE__), '..', 'specdoc')
27
+ )
26
28
  Dir.mkdir(specdoc_path) if !File.exist?(specdoc_path)
27
29
 
28
30
  output_file = File.join(specdoc_path, 'index.html')
@@ -8,10 +8,10 @@ begin
8
8
  desc "Generate Yardoc documentation"
9
9
  YARD::Rake::YardocTask.new do |yardoc|
10
10
  yardoc.name = "yard"
11
- yardoc.options = ["--verbose"]
12
- yardoc.files = [
13
- "lib/**/*.rb", "ext/**/*.c", "README", "CHANGELOG", "LICENSE"
14
- ]
11
+ yardoc.options = ["--verbose", "--markup", "markdown"]
12
+ yardoc.files = FileList[
13
+ "lib/**/*.rb", "ext/**/*.c", "README.md", "CHANGELOG", "LICENSE"
14
+ ].exclude(/idna/)
15
15
  end
16
16
  end
17
17
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: addressable
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
5
- prerelease:
4
+ hash: 13
5
+ prerelease: false
6
6
  segments:
7
7
  - 2
8
8
  - 2
9
- - 4
10
- version: 2.2.4
9
+ - 5
10
+ version: 2.2.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Bob Aman
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-28 00:00:00 -08:00
18
+ date: 2011-04-09 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -93,8 +93,10 @@ executables: []
93
93
  extensions: []
94
94
 
95
95
  extra_rdoc_files:
96
- - README
96
+ - README.md
97
97
  files:
98
+ - lib/addressable/idna/native.rb
99
+ - lib/addressable/idna/pure.rb
98
100
  - lib/addressable/idna.rb
99
101
  - lib/addressable/template.rb
100
102
  - lib/addressable/uri.rb
@@ -114,7 +116,7 @@ files:
114
116
  - CHANGELOG
115
117
  - LICENSE
116
118
  - Rakefile
117
- - README
119
+ - README.md
118
120
  has_rdoc: true
119
121
  homepage: http://addressable.rubyforge.org/
120
122
  licenses: []
@@ -122,7 +124,7 @@ licenses: []
122
124
  post_install_message:
123
125
  rdoc_options:
124
126
  - --main
125
- - README
127
+ - README.md
126
128
  require_paths:
127
129
  - lib
128
130
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -146,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
148
  requirements: []
147
149
 
148
150
  rubyforge_project: addressable
149
- rubygems_version: 1.4.1
151
+ rubygems_version: 1.3.7
150
152
  signing_key:
151
153
  specification_version: 3
152
154
  summary: URI Implementation
data/README DELETED
@@ -1,60 +0,0 @@
1
- == About
2
-
3
- Homepage:: Addressable[http://addressable.rubyforge.org/]
4
- Authors:: Bob Aman (mailto:bob@sporkmonger.com)
5
- Copyright:: Copyright 2010 Bob Aman
6
- License:: MIT
7
-
8
- Addressable is a replacement for the URI implementation that is part of
9
- Ruby's standard library. It more closely conforms to the relevant RFCs and
10
- adds support for IRIs and URI templates. Additionally, it provides extensive
11
- support for URI templates.
12
-
13
- == Classes
14
- - {Addressable::URI}
15
- - {Addressable::Template}
16
-
17
- == Example usage
18
- require "addressable/uri"
19
-
20
- uri = Addressable::URI.parse("http://example.com/path/to/resource/")
21
- uri.scheme
22
- #=> "http"
23
- uri.host
24
- #=> "example.com"
25
- uri.path
26
- #=> "/path/to/resource/"
27
-
28
- uri = Addressable::URI.parse("http://www.詹姆斯.com/")
29
- uri.normalize
30
- #=> #<Addressable::URI:0xc9a4c8 URI:http://www.xn--8ws00zhy3a.com/>
31
-
32
- require "addressable/template"
33
-
34
- template = Addressable::Template.new("http://example.com/{-list|+|query}/")
35
- template.expand({
36
- "query" => "an example query".split(" ")
37
- })
38
- #=> #<Addressable::URI:0xc9d95c URI:http://example.com/an+example+query/>
39
-
40
- template = Addressable::Template.new(
41
- "http://example.com/{-join|&|one,two,three}/"
42
- )
43
- template.partial_expand({"one" => "1", "three" => 3}).pattern
44
- #=> "http://example.com/?one=1{-prefix|&two=|two}&three=3"
45
-
46
- template = Addressable::Template.new(
47
- "http://{host}/{-suffix|/|segments}?{-join|&|one,two,bogus}\#{fragment}"
48
- )
49
- uri = Addressable::URI.parse(
50
- "http://example.com/a/b/c/?one=1&two=2#foo"
51
- )
52
- template.extract(uri)
53
- #=>
54
- # {
55
- # "host" => "example.com",
56
- # "segments" => ["a", "b", "c"],
57
- # "one" => "1",
58
- # "two" => "2",
59
- # "fragment" => "foo"
60
- # }