uri-query_params 0.6.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,10 @@
1
+ ### 0.7.0 / 2012-03-27
2
+
3
+ * Inject {URI::QueryParams::Mixin} into {URI::Generic}, so all URIs have
4
+ `query_params`.
5
+ * Inject {URI::QueryParams::Mixin} into `Addressable::URI`, if `addressable/uri`
6
+ is loaded.
7
+
1
8
  ### 0.6.2 / 2012-03-15
2
9
 
3
10
  * Fixed a query parameter ordering issue in {URI::QueryParams.dump},
@@ -26,7 +33,7 @@
26
33
  * Contains RFC 3986 unsafe URI characters.
27
34
  * Use {URI::QueryParams::UNSAFE} in {URI::QueryParams.dump} for safer
28
35
  query strings.
29
- * Added {URI::QueryParams::Mixin#query}:
36
+ * Added `URI::QueryParams::Mixin#query`:
30
37
  * If any query-params are set, dump them out using
31
38
  {URI::QueryParams.dump}.
32
39
  * Renamed `parse_query_params` to
data/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  ## Description
9
9
 
10
10
  Allows access to the query component of the URI as a Hash. This is similar
11
- to `$_GET` from PHP, except available on any {URI::HTTP} object.
11
+ to `$_GET` from PHP, except available on any Ruby URI object.
12
12
 
13
13
  ## Examples
14
14
 
@@ -29,6 +29,12 @@ Setting the URI query_params:
29
29
  url.to_s
30
30
  # => "http://www.google.com/search?btnG=Search&hs=1HY&rls=org.mozilla:en-US:official&client=firefox-a&hl=en&q=Upright%20Citizens%20Brigade"
31
31
 
32
+ Parsing URI query_params embedded within the Fragment Identifier:
33
+
34
+ url = URI('https://twitter.com/#!/download?lang=en&logged_out=1')
35
+ URI(url.fragment).query_params
36
+ # => {"logged_out"=>"1", "lang"=>"en"}
37
+
32
38
  ## Install
33
39
 
34
40
  $ gem install uri-query_params
data/Rakefile CHANGED
@@ -1,16 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
3
 
4
- begin
5
- gem 'ore-tasks', '~> 0.4'
6
- require 'ore/tasks'
7
-
8
- Ore::Tasks.new
9
- rescue LoadError => e
10
- warn e.message
11
- warn "Run `gem install ore-tasks` to install 'ore/tasks'."
12
- end
13
-
14
4
  begin
15
5
  gem 'rspec', '~> 2.4'
16
6
  require 'rspec/core/rake_task'
@@ -8,6 +8,5 @@ email: postmodern.mod3@gmail.com
8
8
  has_yard: true
9
9
 
10
10
  development_dependencies:
11
- ore-tasks: ~> 0.4
12
11
  rspec: ~> 2.4
13
12
  yard: ~> 0.6
@@ -1,2 +1,2 @@
1
- require 'uri/query_params/extensions/http'
2
- require 'uri/query_params/extensions/https'
1
+ require 'uri/query_params/extensions/uri'
2
+ require 'uri/query_params/extensions/addressable/uri' if defined?(Addressable)
@@ -0,0 +1,11 @@
1
+ require 'uri/query_params/mixin'
2
+
3
+ require 'addressable/uri'
4
+
5
+ module Addressable
6
+ class URI
7
+
8
+ include ::URI::QueryParams::Mixin
9
+
10
+ end
11
+ end
@@ -0,0 +1 @@
1
+ require 'uri/query_params/extensions/uri/generic'
@@ -0,0 +1,39 @@
1
+ require 'uri/query_params/mixin'
2
+
3
+ require 'uri/generic'
4
+
5
+ module URI
6
+ class Generic
7
+
8
+ include URI::QueryParams::Mixin
9
+
10
+ private
11
+
12
+ alias raw_path_query path_query
13
+
14
+ #
15
+ # Parses the query parameters from the query data, populating
16
+ # query_params with the parsed parameters.
17
+ #
18
+ # @see QueryParams.parse
19
+ #
20
+ # @since 0.5.2
21
+ #
22
+ def path_query
23
+ if @query_params
24
+ str = @path
25
+
26
+ unless @query_params.empty?
27
+ str += '?' + URI::QueryParams.dump(@query_params)
28
+ end
29
+
30
+ str
31
+ else
32
+ # do not rebuild the path-query, if the query_params have not
33
+ # been parsed yet
34
+ raw_path_query
35
+ end
36
+ end
37
+
38
+ end
39
+ end
@@ -10,6 +10,58 @@ module URI
10
10
  # Allows setting the query_params.
11
11
  attr_writer :query_params
12
12
 
13
+ #
14
+ # Called when {Mixin} is included into a URI Class. Overrides the `query`
15
+ # and `query=` methods to transparently update the {#query_params}.
16
+ #
17
+ def self.included(base)
18
+ base.module_eval do
19
+ alias raw_query query
20
+
21
+ #
22
+ # The raw query-string.
23
+ #
24
+ # @return [String, nil]
25
+ # The raw query-string.
26
+ #
27
+ # @see QueryParams.dump
28
+ #
29
+ # @since 0.5.2
30
+ #
31
+ def query
32
+ if @query_params
33
+ URI::QueryParams.dump(@query_params)
34
+ else
35
+ raw_query
36
+ end
37
+ end
38
+
39
+ alias raw_query= query=
40
+
41
+ #
42
+ # Sets the query string and updates query_params.
43
+ #
44
+ # @param [String] query_str
45
+ # The new URI query string to use.
46
+ #
47
+ # @return [String]
48
+ # The new URI query string.
49
+ #
50
+ # @example
51
+ # url.query = 'a=1&b=2'
52
+ # # => "a=1&b=2"
53
+ #
54
+ # @see QueryParams.parse
55
+ #
56
+ def query=(new_query)
57
+ new_query = (self.raw_query = new_query)
58
+
59
+ parse_query_params! if @query_params
60
+ return new_query
61
+ end
62
+ end
63
+ end
64
+
13
65
  #
14
66
  # Deep-copies the {#query_params} from another URL.
15
67
  #
@@ -26,46 +78,6 @@ module URI
26
78
  super(url)
27
79
  end
28
80
 
29
- #
30
- # The raw query-string.
31
- #
32
- # @return [String, nil]
33
- # The raw query-string.
34
- #
35
- # @see QueryParams.dump
36
- #
37
- # @since 0.5.2
38
- #
39
- def query
40
- if @query_params
41
- QueryParams.dump(@query_params)
42
- else
43
- super
44
- end
45
- end
46
-
47
- #
48
- # Sets the query string and updates query_params.
49
- #
50
- # @param [String] query_str
51
- # The new URI query string to use.
52
- #
53
- # @return [String]
54
- # The new URI query string.
55
- #
56
- # @example
57
- # url.query = 'a=1&b=2'
58
- # # => "a=1&b=2"
59
- #
60
- # @see QueryParams.parse
61
- #
62
- def query=(raw_query)
63
- new_query = super(raw_query)
64
-
65
- parse_query_params! if @query_params
66
- return new_query
67
- end
68
-
69
81
  #
70
82
  # The query params of the URI.
71
83
  #
@@ -111,26 +123,9 @@ module URI
111
123
  # @since 0.5.2
112
124
  #
113
125
  def parse_query_params!
114
- @query_params = QueryParams.parse(@query)
126
+ @query_params = URI::QueryParams.parse(@query)
115
127
  end
116
128
 
117
- private
118
-
119
- def path_query
120
- if @query_params
121
- str = @path
122
-
123
- unless @query_params.empty?
124
- str += '?' + QueryParams.dump(@query_params)
125
- end
126
-
127
- str
128
- else
129
- # do not rebuild the path-query, if the query_params have not
130
- # been parsed yet
131
- super
132
- end
133
- end
134
129
  end
135
130
  end
136
131
  end
@@ -1,6 +1,6 @@
1
1
  module URI
2
2
  module QueryParams
3
3
  # uri-query_params version
4
- VERSION = '0.6.2'
4
+ VERSION = '0.7.0'
5
5
  end
6
6
  end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+ require 'query_params_mixin_examples'
3
+ require 'uri/query_params/extensions/addressable/uri'
4
+
5
+ describe Addressable::URI do
6
+ let(:uri) { described_class.parse('http://www.example.com/page.php') }
7
+
8
+ it_should_behave_like "URI::QueryParams::Mixin"
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+ require 'query_params_mixin_examples'
3
+ require 'uri/query_params/extensions/uri'
4
+
5
+ describe URI::Generic do
6
+ let(:uri) { URI('/page.php') }
7
+
8
+ it_should_behave_like "URI::QueryParams::Mixin"
9
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'query_params_mixin_examples'
3
- require 'uri/query_params/extensions/http'
3
+ require 'uri/query_params/extensions/uri'
4
4
 
5
5
  describe URI::HTTP do
6
6
  let(:uri) { URI('http://www.example.com/page.php') }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uri-query_params
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-16 00:00:00.000000000 Z
12
+ date: 2012-03-28 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: ore-tasks
16
- requirement: &19935200 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '0.4'
22
- type: :development
23
- prerelease: false
24
- version_requirements: *19935200
25
14
  - !ruby/object:Gem::Dependency
26
15
  name: rspec
27
- requirement: &19934680 !ruby/object:Gem::Requirement
16
+ requirement: &13944620 !ruby/object:Gem::Requirement
28
17
  none: false
29
18
  requirements:
30
19
  - - ~>
@@ -32,10 +21,10 @@ dependencies:
32
21
  version: '2.4'
33
22
  type: :development
34
23
  prerelease: false
35
- version_requirements: *19934680
24
+ version_requirements: *13944620
36
25
  - !ruby/object:Gem::Dependency
37
26
  name: yard
38
- requirement: &19934200 !ruby/object:Gem::Requirement
27
+ requirement: &13944020 !ruby/object:Gem::Requirement
39
28
  none: false
40
29
  requirements:
41
30
  - - ~>
@@ -43,7 +32,7 @@ dependencies:
43
32
  version: '0.6'
44
33
  type: :development
45
34
  prerelease: false
46
- version_requirements: *19934200
35
+ version_requirements: *13944020
47
36
  description: Allows access to the query component of the URI as a Hash.
48
37
  email: postmodern.mod3@gmail.com
49
38
  executables: []
@@ -62,13 +51,15 @@ files:
62
51
  - gemspec.yml
63
52
  - lib/uri/query_params.rb
64
53
  - lib/uri/query_params/extensions.rb
65
- - lib/uri/query_params/extensions/http.rb
66
- - lib/uri/query_params/extensions/https.rb
54
+ - lib/uri/query_params/extensions/addressable/uri.rb
55
+ - lib/uri/query_params/extensions/uri.rb
56
+ - lib/uri/query_params/extensions/uri/generic.rb
67
57
  - lib/uri/query_params/mixin.rb
68
58
  - lib/uri/query_params/query_params.rb
69
59
  - lib/uri/query_params/version.rb
70
- - spec/extensions/http_spec.rb
71
- - spec/extensions/https_spec.rb
60
+ - spec/extensions/addressable/uri_spec.rb
61
+ - spec/extensions/uri/generic_spec.rb
62
+ - spec/extensions/uri/http_spec.rb
72
63
  - spec/query_params_mixin_examples.rb
73
64
  - spec/query_params_spec.rb
74
65
  - spec/spec_helper.rb
@@ -99,7 +90,8 @@ signing_key:
99
90
  specification_version: 3
100
91
  summary: Access the query parameters of a URI, just like $_GET in PHP.
101
92
  test_files:
102
- - spec/extensions/http_spec.rb
103
- - spec/extensions/https_spec.rb
93
+ - spec/extensions/addressable/uri_spec.rb
94
+ - spec/extensions/uri/generic_spec.rb
95
+ - spec/extensions/uri/http_spec.rb
104
96
  - spec/query_params_spec.rb
105
97
  has_rdoc:
@@ -1,11 +0,0 @@
1
- require 'uri/query_params/mixin'
2
-
3
- require 'uri/http'
4
-
5
- module URI
6
- class HTTP < Generic
7
-
8
- include QueryParams::Mixin
9
-
10
- end
11
- end
@@ -1,3 +0,0 @@
1
- require 'uri/query_params/extensions/http'
2
-
3
- require 'uri/https'
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
- require 'query_params_mixin_examples'
3
- require 'uri/query_params/extensions/http'
4
-
5
- describe URI::HTTPS do
6
- let(:uri) { URI('https://www.example.com/page.php') }
7
-
8
- it_should_behave_like "URI::QueryParams::Mixin"
9
- end