uri-query_params 0.6.0 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 98c8b432e06a2809b54dfa91b64fbfe6424b7fa8db77cc6193b577b40eca90a5
4
+ data.tar.gz: af5598c46102cc70eda79bea50ad934532e14fa77729280fdd5dd0e9da2f13c6
5
+ SHA512:
6
+ metadata.gz: 57dca3b3b845dfaf78873bae42784b957a3efb21c684fd4d6ffff615bcb96f0ab554491167dbf7c2424321c263af7fe5b5ac52c753c0c4b8d94a0ef7ebe6412f
7
+ data.tar.gz: ad0079b30c44014d25f08c5af69d08bc1eb7d33be6a9cbaa7afec6e8f31df9ade45d852be58abdbb13f94409ac30ea1c8abbee383e13d4c205e13a878dabd26c
@@ -0,0 +1,31 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: ['**']
8
+
9
+ jobs:
10
+ tests:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ ruby:
16
+ - 2.4
17
+ - 2.5
18
+ - 2.6
19
+ - 2.7
20
+ - jruby
21
+ name: Ruby ${{ matrix.ruby }}
22
+ steps:
23
+ - uses: actions/checkout@v2
24
+ - name: Set up Ruby
25
+ uses: ruby/setup-ruby@v1
26
+ with:
27
+ ruby-version: ${{ matrix.ruby }}
28
+ - name: Install dependencies
29
+ run: bundle install --jobs 4 --retry 3
30
+ - name: Run tests
31
+ run: bundle exec rake test
data/.gitignore CHANGED
@@ -1,9 +1,10 @@
1
- doc
2
- pkg
3
- tmp/*
1
+ /Gemfile.lock
2
+ /doc/
3
+ /pkg/
4
+ /vendor/bundle
5
+ /.bundle
6
+ /.yardoc
4
7
  .DS_Store
5
- .bundle
6
- .yardoc
7
8
  *.db
8
9
  *.log
9
10
  *.swp
@@ -1,3 +1,34 @@
1
+ ### 0.7.2 / 2020-11-29
2
+
3
+ * Use `URI::DEFAULT_PARSER.escape` / `.unescape` instead of the deprecated
4
+ `URI.escape` / `URI.unescape`.
5
+
6
+ ### 0.7.1 / 2015-06-11
7
+
8
+ * Fixed a Ruby 2.2 specific bug where `alias`es are defined before the method
9
+ they alias. (@iraupph)
10
+ * Removed the `URI::Generic#path_query` monkeypatch.
11
+ * Override {URI::Generic#to_s} to call the `query` method overrode by
12
+ {URI::QueryParams::Mixin}, instead of `@query`. Starting in Ruby 2.2.0,
13
+ `path_query` was inlined directly into `URI::Generic#to_s` which broke our
14
+ `path_query` monkeypatch.
15
+
16
+ ### 0.7.0 / 2012-03-27
17
+
18
+ * Inject {URI::QueryParams::Mixin} into {URI::Generic}, so all URIs have
19
+ `query_params`.
20
+ * Inject {URI::QueryParams::Mixin} into `Addressable::URI`, if `addressable/uri`
21
+ is loaded.
22
+
23
+ ### 0.6.2 / 2012-03-15
24
+
25
+ * Fixed a query parameter ordering issue in {URI::QueryParams.dump},
26
+ under Ruby 1.8.x.
27
+
28
+ ### 0.6.1 / 2011-12-31
29
+
30
+ * Added white-space and unprintable characters to {URI::QueryParams::UNSAFE}.
31
+
1
32
  ### 0.6.0 / 2011-12-06
2
33
 
3
34
  * Allow {URI::QueryParams.parse} to yield query-params, in the order they were
@@ -17,7 +48,7 @@
17
48
  * Contains RFC 3986 unsafe URI characters.
18
49
  * Use {URI::QueryParams::UNSAFE} in {URI::QueryParams.dump} for safer
19
50
  query strings.
20
- * Added {URI::QueryParams::Mixin#query}:
51
+ * Added `URI::QueryParams::Mixin#query`:
21
52
  * If any query-params are set, dump them out using
22
53
  {URI::QueryParams.dump}.
23
54
  * Renamed `parse_query_params` to
data/Gemfile ADDED
@@ -0,0 +1,17 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :test do
6
+ gem 'addressable'
7
+ end
8
+
9
+ group :development do
10
+ gem 'rake'
11
+ gem 'rubygems-tasks', '~> 0.2'
12
+
13
+ gem 'rspec', '~> 3.0'
14
+
15
+ gem 'kramdown'
16
+ gem 'yard', '~> 0.9'
17
+ end
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2011 Hal Brodigan
1
+ Copyright (c) 2010-2020 Hal Brodigan
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,14 +1,14 @@
1
1
  # URI query_params
2
2
 
3
- * [Source](http://github.com/postmodern/uri-query_params)
4
- * [Issues](http://github.com/postmodern/uri-query_params/issues)
3
+ * [Source](https://github.com/postmodern/uri-query_params)
4
+ * [Issues](https://github.com/postmodern/uri-query_params/issues)
5
5
  * [Documentation](http://rubydoc.info/gems/uri-query_params/frames)
6
6
  * [Email](mailto:postmodern.mod3 at gmail.com)
7
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,12 +29,18 @@ 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
- $ sudo gem install uri-query_params
40
+ $ gem install uri-query_params
35
41
 
36
42
  ## License
37
43
 
38
- Copyright (c) 2010-2011 Hal Brodigan
44
+ Copyright (c) 2010-2020 Hal Brodigan
39
45
 
40
46
  See {file:LICENSE.txt} for license information.
data/Rakefile CHANGED
@@ -1,36 +1,12 @@
1
1
  require 'rubygems'
2
- require 'rake'
3
2
 
4
- begin
5
- gem 'ore-tasks', '~> 0.4'
6
- require 'ore/tasks'
3
+ require 'rubygems/tasks'
4
+ Gem::Tasks.new
7
5
 
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
- begin
15
- gem 'rspec', '~> 2.4'
16
- require 'rspec/core/rake_task'
17
-
18
- RSpec::Core::RakeTask.new
19
- rescue LoadError => e
20
- task :spec do
21
- abort "Please run `gem install rspec` to install RSpec."
22
- end
23
- end
6
+ require 'rspec/core/rake_task'
7
+ RSpec::Core::RakeTask.new
24
8
  task :test => :spec
25
9
  task :default => :spec
26
10
 
27
- begin
28
- gem 'yard', '~> 0.6.0'
29
- require 'yard'
30
-
31
- YARD::Rake::YardocTask.new
32
- rescue LoadError => e
33
- task :yard do
34
- abort "Please run `gem install yard` to install YARD."
35
- end
36
- end
11
+ require 'yard'
12
+ YARD::Rake::YardocTask.new
@@ -2,12 +2,10 @@ name: uri-query_params
2
2
  summary: Access the query parameters of a URI, just like $_GET in PHP.
3
3
  description: Allows access to the query component of the URI as a Hash.
4
4
  license: MIT
5
- homepage: http://github.com/postmodern/uri-query_params
5
+ homepage: https://github.com/postmodern/uri-query_params
6
6
  authors: Postmodern
7
7
  email: postmodern.mod3@gmail.com
8
8
  has_yard: true
9
9
 
10
10
  development_dependencies:
11
- ore-tasks: ~> 0.4
12
- rspec: ~> 2.4
13
- yard: ~> 0.6.0
11
+ bundler: ~> 2.0
@@ -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,58 @@
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
+ #
11
+ # Constructs String from URI
12
+ #
13
+ # @note
14
+ # This is the `URI::Generic#to_s` method from Ruby 2.2.0, with the minor
15
+ # modification of calling the `query` method overrode by
16
+ # {URI::QueryParams::Mixin}, instead of `@query`.
17
+ #
18
+ # @see https://github.com/ruby/ruby/blob/v2_2_0/lib/uri/generic.rb#L1338-L1376
19
+ #
20
+ def to_s
21
+ str = ''
22
+ if @scheme
23
+ str << @scheme
24
+ str << ':'.freeze
25
+ end
26
+
27
+ if @opaque
28
+ str << @opaque
29
+ else
30
+ if @host
31
+ str << '//'.freeze
32
+ end
33
+ if self.userinfo
34
+ str << self.userinfo
35
+ str << '@'.freeze
36
+ end
37
+ if @host
38
+ str << @host
39
+ end
40
+ if @port && @port != self.default_port
41
+ str << ':'.freeze
42
+ str << @port.to_s
43
+ end
44
+ str << @path
45
+ if query
46
+ str << '?'.freeze
47
+ str << query
48
+ end
49
+ end
50
+ if @fragment
51
+ str << '#'.freeze
52
+ str << @fragment
53
+ end
54
+ str
55
+ end
56
+
57
+ end
58
+ 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
  #
@@ -100,7 +112,7 @@ module URI
100
112
  query_params.each(&block)
101
113
  end
102
114
 
103
- protected
115
+ private
104
116
 
105
117
  #
106
118
  # Parses the query parameters from the query data, populating
@@ -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
@@ -4,8 +4,9 @@ module URI
4
4
  module QueryParams
5
5
  # RFC 3986 unsafe characters (including ' ')
6
6
  UNSAFE = [
7
- ' ', '!', '*', "'", '(', ')', ';', ':', '@', '&', '=', '+', '$', ',',
8
- '/', '?', '%', '#', '[', ']'
7
+ '!', '*', "'", '(', ')', ';', ':', '@', '&', '=', '+', '$', ',',
8
+ '/', '?', '%', '#', '[', ']', ' ', "\f", "\n", "\r", "\t", "\v",
9
+ "\x7f", *("\x00".."\x1f")
9
10
  ].join
10
11
 
11
12
  #
@@ -38,7 +39,9 @@ module URI
38
39
  # Version 0.6.0 allows {parse} to yield the query params, in the order
39
40
  # they are parsed.
40
41
  #
41
- def QueryParams.parse(query_string)
42
+ # @api semipublic
43
+ #
44
+ def self.parse(query_string)
42
45
  query_params = {}
43
46
 
44
47
  if query_string
@@ -48,7 +51,7 @@ module URI
48
51
 
49
52
  name, value = param.split('=',2)
50
53
  value = if value
51
- URI.unescape(value)
54
+ URI::DEFAULT_PARSER.unescape(value)
52
55
  else
53
56
  ''
54
57
  end
@@ -61,6 +64,32 @@ module URI
61
64
  return query_params
62
65
  end
63
66
 
67
+ #
68
+ # Escapes a URI query param value.
69
+ #
70
+ # @param [Array, true, false, nil, #to_s] value
71
+ # The query param value to escape.
72
+ #
73
+ # @return [String]
74
+ # The raw escaped query param value.
75
+ #
76
+ # @since 0.7.1
77
+ #
78
+ # @api semipublic
79
+ #
80
+ def self.escape(value)
81
+ case value
82
+ when Array
83
+ URI::DEFAULT_PARSER.escape(value.join(' '),UNSAFE)
84
+ when true
85
+ 'active'
86
+ when false, nil
87
+ ''
88
+ else
89
+ URI::DEFAULT_PARSER.escape(value.to_s,UNSAFE)
90
+ end
91
+ end
92
+
64
93
  #
65
94
  # Dumps the URI query params.
66
95
  #
@@ -84,20 +113,16 @@ module URI
84
113
  #
85
114
  # @since 0.5.0
86
115
  #
87
- def QueryParams.dump(query_params)
116
+ # @api semipublic
117
+ #
118
+ def self.dump(query_params)
88
119
  query = []
89
120
 
121
+ # explicitly re-order the Hash on Ruby 1.8.x
122
+ query_params.rehash if RUBY_VERSION < '1.9'
123
+
90
124
  query_params.each do |name,value|
91
- value = case value
92
- when Array
93
- URI.escape(value.join(' '),UNSAFE)
94
- when true
95
- 'active'
96
- when false, nil
97
- ''
98
- else
99
- URI.escape(value.to_s,UNSAFE)
100
- end
125
+ value = escape(value)
101
126
 
102
127
  query << "#{name}=#{value}"
103
128
  end
@@ -1,6 +1,6 @@
1
1
  module URI
2
2
  module QueryParams
3
3
  # uri-query_params version
4
- VERSION = '0.6.0'
4
+ VERSION = '0.7.2'
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') }
@@ -10,62 +10,77 @@ shared_examples_for "URI::QueryParams::Mixin" do
10
10
 
11
11
  before(:each) { uri.query = query }
12
12
 
13
- it "should include QueryParams" do
14
- subject.class.should include(URI::QueryParams::Mixin)
15
- end
13
+ context "when included" do
14
+ it "should include QueryParams::Mixin" do
15
+ expect(subject.class).to include(URI::QueryParams::Mixin)
16
+ end
16
17
 
17
- it "should still provide access to #query" do
18
- uri.query.should == query
19
- end
18
+ it "should still provide access to #query" do
19
+ expect(uri.query).to eq(query)
20
+ end
20
21
 
21
- it "should provide #query_params" do
22
- should respond_to(:query_params)
22
+ it "should provide #query_params" do
23
+ is_expected.to respond_to(:query_params)
24
+ end
23
25
  end
24
26
 
25
- it "should update #query_params after #query is set" do
26
- subject.query = 'u=2'
27
- subject.query_params['u'].should == '2'
28
- end
27
+ context "when copied" do
28
+ it "should deep-copy the query_params Hash" do
29
+ original = subject.query_params.object_id
29
30
 
30
- it "should dump out the #query_params when accessing #query" do
31
- subject.query_params = {'u' => '3'}
32
- subject.query.should == 'u=3'
31
+ expect(subject.dup.query_params.object_id).not_to eq(original)
32
+ expect(subject.clone.query_params.object_id).not_to eq(original)
33
+ end
33
34
  end
34
35
 
35
- it "should properly escape query param values" do
36
- subject.query_params = {'x' => '1&2', 'y' => 'one=two', 'z' => '?'}
36
+ describe "#query=" do
37
+ it "should update #query_params after #query is set" do
38
+ subject.query = 'u=2'
37
39
 
38
- subject.to_s.match(/\?(.+)$/)[1].should == "x=1%262&y=one%3Dtwo&z=%3F"
40
+ expect(subject.query_params['u']).to eq('2')
41
+ end
39
42
  end
40
43
 
41
- it "should deep-copy the query_params Hash" do
42
- original = subject.query_params.object_id
44
+ describe "#query" do
45
+ it "should dump out the #query_params when accessing #query" do
46
+ subject.query_params = {'u' => '3'}
47
+ expect(subject.query).to eq('u=3')
48
+ end
49
+
50
+ it "should properly escape query param values" do
51
+ subject.query_params = {'x' => '1&2', 'y' => 'one=two', 'z' => '?'}
43
52
 
44
- subject.dup.query_params.object_id.should_not == original
45
- subject.clone.query_params.object_id.should_not == original
53
+ expect(subject.query).to eq("x=1%262&y=one%3Dtwo&z=%3F")
54
+ end
55
+ end
56
+
57
+ describe "#to_s" do
58
+ it "should include the #query_params" do
59
+ expect(subject.to_s.split('?',2).last).to eq(query)
60
+ end
46
61
  end
47
62
 
48
63
  describe "#query_params" do
49
64
  subject { uri.query_params }
50
65
 
51
66
  it "should be a Hash" do
52
- subject.class.should == Hash
67
+ expect(subject.class).to eq(Hash)
53
68
  end
54
69
 
55
70
  it "should contain params" do
56
- should_not be_empty
71
+ is_expected.not_to be_empty
57
72
  end
58
73
 
59
74
  it "can contain single-word params" do
60
- subject['x'].should == '1'
75
+ expect(subject['x']).to eq('1')
61
76
  end
62
77
 
63
78
  it "can contain multi-word params" do
64
- subject['y'].should == 'one two'
79
+ expect(subject['y']).to eq('one two')
65
80
  end
66
81
 
67
82
  it "can contain empty params" do
68
- subject['z'].should be_empty
83
+ expect(subject['z']).to be_empty
69
84
  end
70
85
  end
71
86
  end
@@ -6,41 +6,41 @@ require 'uri'
6
6
  describe URI::QueryParams do
7
7
  describe "parse" do
8
8
  it "should not parse an empty String" do
9
- subject.parse('').should be_empty
9
+ expect(subject.parse('')).to be_empty
10
10
  end
11
11
 
12
12
  it "should not parse empty params" do
13
- subject.parse('a&&&b').should == {'a' => '', 'b' => ''}
13
+ expect(subject.parse('a&&&b')).to eq({'a' => '', 'b' => ''})
14
14
  end
15
15
 
16
16
  it "should parse a single query param name" do
17
- subject.parse('x').should have_key('x')
17
+ expect(subject.parse('x')).to have_key('x')
18
18
  end
19
19
 
20
20
  it "should parse a query param with an empty value" do
21
21
  query_params = subject.parse('x=')
22
22
 
23
- query_params.should have_key('x')
24
- query_params['x'].should be_empty
23
+ expect(query_params).to have_key('x')
24
+ expect(query_params['x']).to be_empty
25
25
  end
26
26
 
27
27
  it "should URI decode query param values" do
28
28
  query_params = subject.parse('x=1%202')
29
29
 
30
- query_params['x'].should == '1 2'
30
+ expect(query_params['x']).to eq('1 2')
31
31
  end
32
32
 
33
33
  it "should ignore multiple '=' characters in query param values" do
34
34
  query_params = subject.parse('x=1=2')
35
35
 
36
- query_params['x'].should == '1=2'
36
+ expect(query_params['x']).to eq('1=2')
37
37
  end
38
38
 
39
39
  it "should parse multiple query params" do
40
40
  query_params = subject.parse('x=1&y=2')
41
41
 
42
- query_params['x'].should == '1'
43
- query_params['y'].should == '2'
42
+ expect(query_params['x']).to eq('1')
43
+ expect(query_params['y']).to eq('2')
44
44
  end
45
45
 
46
46
  context "when given a block" do
@@ -51,7 +51,7 @@ describe URI::QueryParams do
51
51
  params << [name, value]
52
52
  end
53
53
 
54
- params.should == [['z', '1'], ['z', '2'], ['z', '3']]
54
+ expect(params).to eq([['z', '1'], ['z', '2'], ['z', '3']])
55
55
  end
56
56
 
57
57
  it "should yield the query params in the order they are parsed" do
@@ -61,38 +61,38 @@ describe URI::QueryParams do
61
61
  params << [name, value]
62
62
  end
63
63
 
64
- params.should == [['z', '1'], ['y', '2'], ['x', '3']]
64
+ expect(params).to eq([['z', '1'], ['y', '2'], ['x', '3']])
65
65
  end
66
66
  end
67
67
  end
68
68
 
69
69
  describe "dump" do
70
70
  it "should not dump an empty Hash" do
71
- subject.dump({}).should be_empty
71
+ expect(subject.dump({})).to be_empty
72
72
  end
73
73
 
74
74
  it "should dump query params with no values" do
75
- subject.dump({'x' => nil}).should == 'x='
75
+ expect(subject.dump({'x' => nil})).to eq('x=')
76
76
  end
77
77
 
78
78
  it "should dump query params with empty values" do
79
- subject.dump({'x' => ''}).should == 'x='
79
+ expect(subject.dump({'x' => ''})).to eq('x=')
80
80
  end
81
81
 
82
82
  it "should dump query params with true values" do
83
- subject.dump({'x' => true}).should == 'x=active'
83
+ expect(subject.dump({'x' => true})).to eq('x=active')
84
84
  end
85
85
 
86
86
  it "should dump query params with non String values" do
87
- subject.dump({'x' => 1}).should == 'x=1'
87
+ expect(subject.dump({'x' => 1})).to eq('x=1')
88
88
  end
89
89
 
90
90
  it "should dump query params with Array values" do
91
- subject.dump({'x' => [1,2]}).should == 'x=1%202'
91
+ expect(subject.dump({'x' => [1,2]})).to eq('x=1%202')
92
92
  end
93
93
 
94
94
  it "should dump multiple query params" do
95
- subject.dump({'x' => '1', 'y' => '2'}).should == 'x=1&y=2'
95
+ expect(subject.dump({'x' => '1', 'y' => '2'})).to eq('x=1&y=2')
96
96
  end
97
97
  end
98
98
  end
@@ -1,2 +1 @@
1
- gem 'rspec', '~> 2.4'
2
1
  require 'rspec'
metadata CHANGED
@@ -1,105 +1,86 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uri-query_params
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
5
- prerelease:
4
+ version: 0.7.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Postmodern
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2011-12-07 00:00:00.000000000 Z
11
+ date: 2020-11-29 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: ore-tasks
16
- requirement: &18100340 !ruby/object:Gem::Requirement
17
- none: false
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '0.4'
19
+ version: '2.0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *18100340
25
- - !ruby/object:Gem::Dependency
26
- name: rspec
27
- requirement: &18099820 !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
30
- - - ~>
31
- - !ruby/object:Gem::Version
32
- version: '2.4'
33
- type: :development
34
- prerelease: false
35
- version_requirements: *18099820
36
- - !ruby/object:Gem::Dependency
37
- name: yard
38
- requirement: &18099340 !ruby/object:Gem::Requirement
39
- none: false
22
+ version_requirements: !ruby/object:Gem::Requirement
40
23
  requirements:
41
- - - ~>
24
+ - - "~>"
42
25
  - !ruby/object:Gem::Version
43
- version: 0.6.0
44
- type: :development
45
- prerelease: false
46
- version_requirements: *18099340
26
+ version: '2.0'
47
27
  description: Allows access to the query component of the URI as a Hash.
48
28
  email: postmodern.mod3@gmail.com
49
29
  executables: []
50
30
  extensions: []
51
31
  extra_rdoc_files: []
52
32
  files:
53
- - .document
54
- - .gemtest
55
- - .gitignore
56
- - .rspec
57
- - .yardopts
33
+ - ".document"
34
+ - ".github/workflows/ruby.yml"
35
+ - ".gitignore"
36
+ - ".rspec"
37
+ - ".yardopts"
58
38
  - ChangeLog.md
39
+ - Gemfile
59
40
  - LICENSE.txt
60
41
  - README.md
61
42
  - Rakefile
62
43
  - gemspec.yml
63
44
  - lib/uri/query_params.rb
64
45
  - lib/uri/query_params/extensions.rb
65
- - lib/uri/query_params/extensions/http.rb
66
- - lib/uri/query_params/extensions/https.rb
46
+ - lib/uri/query_params/extensions/addressable/uri.rb
47
+ - lib/uri/query_params/extensions/uri.rb
48
+ - lib/uri/query_params/extensions/uri/generic.rb
67
49
  - lib/uri/query_params/mixin.rb
68
50
  - lib/uri/query_params/query_params.rb
69
51
  - lib/uri/query_params/version.rb
70
- - spec/extensions/http_spec.rb
71
- - spec/extensions/https_spec.rb
52
+ - spec/extensions/addressable/uri_spec.rb
53
+ - spec/extensions/uri/generic_spec.rb
54
+ - spec/extensions/uri/http_spec.rb
72
55
  - spec/query_params_mixin_examples.rb
73
56
  - spec/query_params_spec.rb
74
57
  - spec/spec_helper.rb
75
58
  - uri-query_params.gemspec
76
- homepage: http://github.com/postmodern/uri-query_params
59
+ homepage: https://github.com/postmodern/uri-query_params
77
60
  licenses:
78
61
  - MIT
62
+ metadata: {}
79
63
  post_install_message:
80
64
  rdoc_options: []
81
65
  require_paths:
82
66
  - lib
83
67
  required_ruby_version: !ruby/object:Gem::Requirement
84
- none: false
85
68
  requirements:
86
- - - ! '>='
69
+ - - ">="
87
70
  - !ruby/object:Gem::Version
88
71
  version: '0'
89
72
  required_rubygems_version: !ruby/object:Gem::Requirement
90
- none: false
91
73
  requirements:
92
- - - ! '>='
74
+ - - ">="
93
75
  - !ruby/object:Gem::Version
94
76
  version: '0'
95
77
  requirements: []
96
- rubyforge_project:
97
- rubygems_version: 1.8.10
78
+ rubygems_version: 3.1.4
98
79
  signing_key:
99
- specification_version: 3
80
+ specification_version: 4
100
81
  summary: Access the query parameters of a URI, just like $_GET in PHP.
101
82
  test_files:
102
- - spec/extensions/http_spec.rb
103
- - spec/extensions/https_spec.rb
83
+ - spec/extensions/addressable/uri_spec.rb
84
+ - spec/extensions/uri/generic_spec.rb
85
+ - spec/extensions/uri/http_spec.rb
104
86
  - spec/query_params_spec.rb
105
- has_rdoc:
data/.gemtest DELETED
File without changes
@@ -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