uri-query_params 0.7.2 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98c8b432e06a2809b54dfa91b64fbfe6424b7fa8db77cc6193b577b40eca90a5
4
- data.tar.gz: af5598c46102cc70eda79bea50ad934532e14fa77729280fdd5dd0e9da2f13c6
3
+ metadata.gz: cc67bd83bfc5a5da2b33ddb21f124663d45e54ce09498b541f223a6180851236
4
+ data.tar.gz: 692d674b03b6e0e165c4ee5cd78363b9e7288ac428d4972c69de8f90379668fc
5
5
  SHA512:
6
- metadata.gz: 57dca3b3b845dfaf78873bae42784b957a3efb21c684fd4d6ffff615bcb96f0ab554491167dbf7c2424321c263af7fe5b5ac52c753c0c4b8d94a0ef7ebe6412f
7
- data.tar.gz: ad0079b30c44014d25f08c5af69d08bc1eb7d33be6a9cbaa7afec6e8f31df9ade45d852be58abdbb13f94409ac30ea1c8abbee383e13d4c205e13a878dabd26c
6
+ metadata.gz: cb4d13c217fabbd2abe86abab5a4bdce9c7039430967c955cac58d9eb06584c29dfd7cbdfefe04250d6670936f28bae2d619ea4bb9a9c762ba5ac005bb83d1f4
7
+ data.tar.gz: 902d5196f48db8853c9f60110039ffc0fa41835c6877dac60798f69ea3a5e0f063c5cc321f5d8bae3635ddd41d00920edd3ee87cd24ab1eee46e32a78e285d29
@@ -1,10 +1,6 @@
1
1
  name: CI
2
2
 
3
- on:
4
- push:
5
- branches: [ master ]
6
- pull_request:
7
- branches: ['**']
3
+ on: [ push, pull_request ]
8
4
 
9
5
  jobs:
10
6
  tests:
@@ -13,11 +9,10 @@ jobs:
13
9
  fail-fast: false
14
10
  matrix:
15
11
  ruby:
16
- - 2.4
17
- - 2.5
18
- - 2.6
19
- - 2.7
12
+ - '3.0'
13
+ - 3.1
20
14
  - jruby
15
+ - truffleruby
21
16
  name: Ruby ${{ matrix.ruby }}
22
17
  steps:
23
18
  - uses: actions/checkout@v2
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  /Gemfile.lock
2
+ /coverage/
2
3
  /doc/
3
4
  /pkg/
4
5
  /vendor/bundle
data/ChangeLog.md CHANGED
@@ -1,3 +1,16 @@
1
+ ### 0.8.1 / 2022-10-22
2
+
3
+ * Updated {URI::Generic#to_s} to ruby-3.0.0.
4
+ * Override {URI::HTTP#request_uri} to be aware of
5
+ {URI::QueryParams::Mixin#query_params}.
6
+
7
+ ### 0.8.0 / 2022-01-14
8
+
9
+ * Require [ruby] >= 2.0.0.
10
+ * Renamed `uri/query_params/extensions` to `uri/query_params/core_ext`.
11
+ * Removed legacy [ruby] 1.8 code.
12
+ * Fix instance variable warnings in `uri/query_params/mixin`.
13
+
1
14
  ### 0.7.2 / 2020-11-29
2
15
 
3
16
  * Use `URI::DEFAULT_PARSER.escape` / `.unescape` instead of the deprecated
@@ -70,3 +83,4 @@
70
83
 
71
84
  * Initial release.
72
85
 
86
+ [ruby]: https://www.ruby-lang.org/
data/Gemfile CHANGED
@@ -10,8 +10,10 @@ group :development do
10
10
  gem 'rake'
11
11
  gem 'rubygems-tasks', '~> 0.2'
12
12
 
13
- gem 'rspec', '~> 3.0'
13
+ gem 'rspec', '~> 3.0'
14
+ gem 'simplecov', '~> 0.20'
14
15
 
15
16
  gem 'kramdown'
16
17
  gem 'yard', '~> 0.9'
18
+ gem 'yard-spellcheck', require: false
17
19
  end
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2020 Hal Brodigan
1
+ Copyright (c) 2010-2022 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
@@ -3,7 +3,6 @@
3
3
  * [Source](https://github.com/postmodern/uri-query_params)
4
4
  * [Issues](https://github.com/postmodern/uri-query_params/issues)
5
5
  * [Documentation](http://rubydoc.info/gems/uri-query_params/frames)
6
- * [Email](mailto:postmodern.mod3 at gmail.com)
7
6
 
8
7
  ## Description
9
8
 
@@ -14,26 +13,36 @@ to `$_GET` from PHP, except available on any Ruby URI object.
14
13
 
15
14
  Inspecting the URI query_params:
16
15
 
17
- require 'uri/query_params'
18
-
19
- url = URI('http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=1HY&q=bob+ross&btnG=Search')
20
- url.query_params
21
- # => {"btnG"=>"Search", "hs"=>"1HY", "rls"=>"org.mozilla:en-US:official", "client"=>"firefox-a", "hl"=>"en", "q"=>"bob+ross"}
16
+ ```ruby
17
+ require 'uri/query_params'
22
18
 
23
- url.query_params['q']
24
- # => "bob+ross"
19
+ url = URI('http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=1HY&q=bob+ross&btnG=Search')
20
+ url.query_params
21
+ # => {"btnG"=>"Search", "hs"=>"1HY", "rls"=>"org.mozilla:en-US:official", "client"=>"firefox-a", "hl"=>"en", "q"=>"bob+ross"}
22
+
23
+ url.query_params['q']
24
+ # => "bob+ross"
25
+ ```
25
26
 
26
27
  Setting the URI query_params:
27
28
 
28
- url.query_params['q'] = 'Upright Citizens Brigade'
29
- url.to_s
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"
29
+ ```ruby
30
+ url.query_params['q'] = 'Upright Citizens Brigade'
31
+ url.to_s
32
+ # => "http://www.google.com/search?btnG=Search&hs=1HY&rls=org.mozilla:en-US:official&client=firefox-a&hl=en&q=Upright%20Citizens%20Brigade"
33
+ ```
31
34
 
32
35
  Parsing URI query_params embedded within the Fragment Identifier:
33
36
 
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
+ ```ruby
38
+ url = URI('https://twitter.com/#!/download?lang=en&logged_out=1')
39
+ URI(url.fragment).query_params
40
+ # => {"logged_out"=>"1", "lang"=>"en"}
41
+ ```
42
+
43
+ ## Requirements
44
+
45
+ * [ruby] >= 2.0.0
37
46
 
38
47
  ## Install
39
48
 
@@ -41,6 +50,8 @@ Parsing URI query_params embedded within the Fragment Identifier:
41
50
 
42
51
  ## License
43
52
 
44
- Copyright (c) 2010-2020 Hal Brodigan
53
+ Copyright (c) 2010-2022 Hal Brodigan
45
54
 
46
55
  See {file:LICENSE.txt} for license information.
56
+
57
+ [ruby]: https://www.ruby-lang.org/
data/gemspec.yml CHANGED
@@ -7,5 +7,14 @@ authors: Postmodern
7
7
  email: postmodern.mod3@gmail.com
8
8
  has_yard: true
9
9
 
10
+ metadata:
11
+ documentation_uri: https://rubydoc.info/gems/uri-query_params
12
+ source_code_uri: https://github.com/postmodern/uri-query_params.rb
13
+ bug_tracker_uri: https://github.com/postmodern/uri-query_params.rb/issues
14
+ changelog_uri: https://github.com/postmodern/uri-query_params.rb/blob/master/ChangeLog.md
15
+ rubygems_mfa_required: 'true'
16
+
17
+ required_ruby_version: ">= 2.0.0"
18
+
10
19
  development_dependencies:
11
20
  bundler: ~> 2.0
@@ -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,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri/query_params/mixin'
4
+
5
+ require 'uri/generic'
6
+
7
+ module URI
8
+ class Generic
9
+
10
+ include URI::QueryParams::Mixin
11
+
12
+ #
13
+ # Constructs String from URI
14
+ #
15
+ # @note
16
+ # This is the `URI::Generic#to_s` method from Ruby 3.0.0, with the minor
17
+ # modification of calling the `query` method overrode by
18
+ # {URI::QueryParams::Mixin}, instead of `@query`.
19
+ #
20
+ # @see https://github.com/ruby/ruby/blob/v3_0.0/lib/uri/generic.rb#L1330-L1368
21
+ #
22
+ def to_s
23
+ str = ''.dup
24
+ if @scheme
25
+ str << @scheme
26
+ str << ':'
27
+ end
28
+
29
+ if @opaque
30
+ str << @opaque
31
+ else
32
+ if @host || %w[file postgres].include?(@scheme)
33
+ str << '//'
34
+ end
35
+ if self.userinfo
36
+ str << self.userinfo
37
+ str << '@'
38
+ end
39
+ if @host
40
+ str << @host
41
+ end
42
+ if @port && @port != self.default_port
43
+ str << ':'
44
+ str << @port.to_s
45
+ end
46
+ str << @path
47
+ if (query = self.query)
48
+ str << '?'
49
+ str << query
50
+ end
51
+ end
52
+ if @fragment
53
+ str << '#'
54
+ str << @fragment
55
+ end
56
+ str
57
+ end
58
+
59
+ end
60
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri/query_params/core_ext/uri/generic'
4
+
5
+ require 'uri/http'
6
+
7
+ module URI
8
+ class HTTP < Generic
9
+
10
+ alias raw_request_uri request_uri
11
+
12
+ #
13
+ # Returns the full path for an HTTP request.
14
+ #
15
+ # @return [String, nil]
16
+ # The request URI (path + query params) or `nil` if the URI has no
17
+ # path.
18
+ #
19
+ # @example
20
+ # uri.path = '/path'
21
+ # uri.query_params['foo'] = '1'
22
+ # uri.query_params['bar'] = '2'
23
+ # uri.request_uri
24
+ # # => "/path?foo=1&bar=2"
25
+ #
26
+ def request_uri
27
+ if defined?(@query_params) && @query_params
28
+ return unless @path
29
+
30
+ query = URI::QueryParams.dump(@query_params)
31
+
32
+ url = "#{@path}?#{query}"
33
+ url = "/#{url}" unless url.start_with?('/')
34
+ url
35
+ else
36
+ raw_request_uri
37
+ end
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,2 @@
1
+ require 'uri/query_params/core_ext/uri/generic'
2
+ require 'uri/query_params/core_ext/uri/http'
@@ -0,0 +1,2 @@
1
+ require 'uri/query_params/core_ext/uri'
2
+ require 'uri/query_params/core_ext/addressable/uri' if defined?(Addressable)
@@ -1,11 +1 @@
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
1
+ require 'uri/query_params/core_ext/addressable/uri'
@@ -1,58 +1 @@
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
1
+ require 'uri/query_params/core_ext/uri/generic'
@@ -1 +1 @@
1
- require 'uri/query_params/extensions/uri/generic'
1
+ require 'uri/query_params/core_ext/uri'
@@ -1,2 +1 @@
1
- require 'uri/query_params/extensions/uri'
2
- require 'uri/query_params/extensions/addressable/uri' if defined?(Addressable)
1
+ require 'uri/query_params/core_ext'
@@ -29,7 +29,7 @@ module URI
29
29
  # @since 0.5.2
30
30
  #
31
31
  def query
32
- if @query_params
32
+ if defined?(@query_params) && @query_params
33
33
  URI::QueryParams.dump(@query_params)
34
34
  else
35
35
  raw_query
@@ -56,7 +56,7 @@ module URI
56
56
  def query=(new_query)
57
57
  new_query = (self.raw_query = new_query)
58
58
 
59
- parse_query_params! if @query_params
59
+ parse_query_params! if defined?(@query_params) && @query_params
60
60
  return new_query
61
61
  end
62
62
  end
@@ -50,10 +50,8 @@ module URI
50
50
  next if param.empty?
51
51
 
52
52
  name, value = param.split('=',2)
53
- value = if value
54
- URI::DEFAULT_PARSER.unescape(value)
55
- else
56
- ''
53
+ value = if value then URI::DEFAULT_PARSER.unescape(value)
54
+ else ''
57
55
  end
58
56
 
59
57
  yield(name,value) if block_given?
@@ -79,14 +77,10 @@ module URI
79
77
  #
80
78
  def self.escape(value)
81
79
  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)
80
+ when Array then URI::DEFAULT_PARSER.escape(value.join(' '),UNSAFE)
81
+ when true then 'active'
82
+ when false, nil then ''
83
+ else URI::DEFAULT_PARSER.escape(value.to_s,UNSAFE)
90
84
  end
91
85
  end
92
86
 
@@ -116,18 +110,9 @@ module URI
116
110
  # @api semipublic
117
111
  #
118
112
  def self.dump(query_params)
119
- query = []
120
-
121
- # explicitly re-order the Hash on Ruby 1.8.x
122
- query_params.rehash if RUBY_VERSION < '1.9'
123
-
124
- query_params.each do |name,value|
125
- value = escape(value)
126
-
127
- query << "#{name}=#{value}"
128
- end
129
-
130
- return query.join('&')
113
+ query_params.map { |name,value|
114
+ "#{name}=#{escape(value)}"
115
+ }.join('&')
131
116
  end
132
117
 
133
118
  end
@@ -1,6 +1,6 @@
1
1
  module URI
2
2
  module QueryParams
3
3
  # uri-query_params version
4
- VERSION = '0.7.2'
4
+ VERSION = '0.8.1'
5
5
  end
6
6
  end
@@ -1,2 +1,2 @@
1
1
  require 'uri/query_params/query_params'
2
- require 'uri/query_params/extensions'
2
+ require 'uri/query_params/core_ext'
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
  require 'query_params_mixin_examples'
3
- require 'uri/query_params/extensions/addressable/uri'
3
+ require 'uri/query_params/core_ext/addressable/uri'
4
4
 
5
5
  describe Addressable::URI do
6
- let(:uri) { described_class.parse('http://www.example.com/page.php') }
6
+ subject { described_class.parse('http://www.example.com/page.php') }
7
7
 
8
8
  it_should_behave_like "URI::QueryParams::Mixin"
9
9
  end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+ require 'query_params_mixin_examples'
3
+ require 'uri/query_params/core_ext/uri'
4
+
5
+ describe URI::Generic do
6
+ subject { URI.parse('/page.php') }
7
+
8
+ it_should_behave_like "URI::QueryParams::Mixin"
9
+ end
@@ -0,0 +1,77 @@
1
+ require 'spec_helper'
2
+ require 'query_params_mixin_examples'
3
+ require 'uri/query_params/core_ext/uri/http'
4
+
5
+ describe URI::HTTP do
6
+ subject { URI.parse("http://www.example.com/page.php") }
7
+
8
+ it_should_behave_like "URI::QueryParams::Mixin"
9
+
10
+ describe "#request_uri" do
11
+ context "when #query_params is set" do
12
+ let(:query_params) do
13
+ {'x' => '1', 'y' => '2'}
14
+ end
15
+
16
+ before { subject.query_params = query_params }
17
+
18
+ context "and when #path is set" do
19
+ it "must return the #path and #query_params" do
20
+ expect(subject.request_uri).to eq("#{subject.path}?x=#{query_params['x']}&y=#{query_params['y']}")
21
+ end
22
+
23
+ context "but #path does not start with a '/' character" do
24
+ subject { URI.parse("http://www.example.com") }
25
+
26
+ it "must prepend a '/' character" do
27
+ expect(subject.request_uri).to eq("/#{subject.path}?x=#{query_params['x']}&y=#{query_params['y']}")
28
+ end
29
+ end
30
+ end
31
+
32
+ context "but #path is not set" do
33
+ before { subject.path = nil }
34
+
35
+ it "must return nil" do
36
+ expect(subject.request_uri).to be(nil)
37
+ end
38
+ end
39
+ end
40
+
41
+ context "when #query_params is not set" do
42
+ context "and when #path is set" do
43
+ context "and when #query is set" do
44
+ let(:query) { 'x=1&y=2' }
45
+
46
+ subject { URI("http://www.example.com/page.php?#{query}") }
47
+
48
+ it "must return the #path and #query" do
49
+ expect(subject.request_uri).to eq("#{subject.path}?#{subject.query}")
50
+ end
51
+ end
52
+
53
+ context "but when #query is not set" do
54
+ it "must return #path" do
55
+ expect(subject.request_uri).to eq(subject.path)
56
+ end
57
+ end
58
+
59
+ context "but #path does not start with a '/' character" do
60
+ subject { URI.parse("http://www.example.com") }
61
+
62
+ it "must prepend a '/' character" do
63
+ expect(subject.request_uri).to eq("/#{subject.path}")
64
+ end
65
+ end
66
+ end
67
+
68
+ context "but #path is not set" do
69
+ before { subject.path = nil }
70
+
71
+ it "must return nil" do
72
+ expect(subject.request_uri).to be(nil)
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+ require 'uri/query_params/extensions/addressable/uri'
3
+
4
+ describe 'uri/query_params/extensions/addressable/uri' do
5
+ let(:root) { File.expand_path(File.join('..','..','..'),__dir__) }
6
+ let(:path) do
7
+ File.join(root,'lib','uri','query_params','core_ext', 'addressable','uri.rb')
8
+ end
9
+
10
+ it "must require 'uri/query_params/core_ext/addressable/uri'" do
11
+ expect($LOADED_FEATURES).to include(path)
12
+ end
13
+ end
@@ -1,9 +1,13 @@
1
1
  require 'spec_helper'
2
- require 'query_params_mixin_examples'
3
- require 'uri/query_params/extensions/uri'
2
+ require 'uri/query_params/extensions/uri/generic'
4
3
 
5
- describe URI::Generic do
6
- let(:uri) { URI('/page.php') }
4
+ describe 'uri/query_params/extensions/uri/generic' do
5
+ let(:root) { File.expand_path(File.join('..','..','..'),__dir__) }
6
+ let(:path) do
7
+ File.join(root,'lib','uri','query_params','core_ext', 'uri','generic.rb')
8
+ end
7
9
 
8
- it_should_behave_like "URI::QueryParams::Mixin"
10
+ it "must require 'uri/query_params/core_ext/uri/generic'" do
11
+ expect($LOADED_FEATURES).to include(path)
12
+ end
9
13
  end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+ require 'uri/query_params/extensions/uri'
3
+
4
+ describe 'uri/query_params/extensions/uri' do
5
+ let(:root) { File.expand_path(File.join('..','..'),__dir__) }
6
+ let(:path) { File.join(root,'lib','uri','query_params','core_ext', 'uri.rb') }
7
+
8
+ it "must require 'uri/query_params/core_ext/uri'" do
9
+ expect($LOADED_FEATURES).to include(path)
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+ require 'uri/query_params/extensions'
3
+
4
+ describe 'uri/query_params/extensions' do
5
+ let(:root) { File.expand_path('..',__dir__) }
6
+ let(:path) { File.join(root,'lib','uri','query_params','core_ext.rb') }
7
+
8
+ it "must require 'uri/query_params/core_ext'" do
9
+ expect($LOADED_FEATURES).to include(path)
10
+ end
11
+ end
@@ -6,9 +6,7 @@ require 'uri'
6
6
  shared_examples_for "URI::QueryParams::Mixin" do
7
7
  let(:query) { 'x=1&y=one%20two&z' }
8
8
 
9
- subject { uri }
10
-
11
- before(:each) { uri.query = query }
9
+ before { subject.query = query }
12
10
 
13
11
  context "when included" do
14
12
  it "should include QueryParams::Mixin" do
@@ -16,11 +14,11 @@ shared_examples_for "URI::QueryParams::Mixin" do
16
14
  end
17
15
 
18
16
  it "should still provide access to #query" do
19
- expect(uri.query).to eq(query)
17
+ expect(subject.query).to eq(query)
20
18
  end
21
19
 
22
20
  it "should provide #query_params" do
23
- is_expected.to respond_to(:query_params)
21
+ expect(subject).to respond_to(:query_params)
24
22
  end
25
23
  end
26
24
 
@@ -44,6 +42,7 @@ shared_examples_for "URI::QueryParams::Mixin" do
44
42
  describe "#query" do
45
43
  it "should dump out the #query_params when accessing #query" do
46
44
  subject.query_params = {'u' => '3'}
45
+
47
46
  expect(subject.query).to eq('u=3')
48
47
  end
49
48
 
@@ -61,26 +60,24 @@ shared_examples_for "URI::QueryParams::Mixin" do
61
60
  end
62
61
 
63
62
  describe "#query_params" do
64
- subject { uri.query_params }
65
-
66
63
  it "should be a Hash" do
67
- expect(subject.class).to eq(Hash)
64
+ expect(subject.query_params.class).to eq(Hash)
68
65
  end
69
66
 
70
67
  it "should contain params" do
71
- is_expected.not_to be_empty
68
+ expect(subject.query_params).not_to be_empty
72
69
  end
73
70
 
74
71
  it "can contain single-word params" do
75
- expect(subject['x']).to eq('1')
72
+ expect(subject.query_params['x']).to eq('1')
76
73
  end
77
74
 
78
75
  it "can contain multi-word params" do
79
- expect(subject['y']).to eq('one two')
76
+ expect(subject.query_params['y']).to eq('one two')
80
77
  end
81
78
 
82
79
  it "can contain empty params" do
83
- expect(subject['z']).to be_empty
80
+ expect(subject.query_params['z']).to be_empty
84
81
  end
85
82
  end
86
83
  end
data/spec/spec_helper.rb CHANGED
@@ -1 +1,4 @@
1
1
  require 'rspec'
2
+ require 'simplecov'
3
+
4
+ SimpleCov.start
@@ -2,126 +2,60 @@
2
2
 
3
3
  require 'yaml'
4
4
 
5
- Gem::Specification.new do |gemspec|
6
- files = if File.directory?('.git')
7
- `git ls-files`.split($/)
8
- elsif File.directory?('.hg')
9
- `hg manifest`.split($/)
10
- elsif File.directory?('.svn')
11
- `svn ls -R`.split($/).select { |path| File.file?(path) }
12
- else
13
- Dir['{**/}{.*,*}'].select { |path| File.file?(path) }
14
- end
5
+ Gem::Specification.new do |gem|
6
+ gemspec = YAML.load_file('gemspec.yml')
15
7
 
16
- filter_files = lambda { |paths|
17
- case paths
18
- when Array
19
- (files & paths)
20
- when String
21
- (files & Dir[paths])
22
- end
23
- }
24
-
25
- version = {
26
- :file => 'lib/uri/query_params/version.rb',
27
- :constant => 'URI::QueryParams::VERSION'
28
- }
29
-
30
- defaults = {
31
- 'name' => File.basename(File.dirname(__FILE__)),
32
- 'files' => files,
33
- 'executables' => filter_files['bin/*'].map { |path| File.basename(path) },
34
- 'test_files' => filter_files['{test/{**/}*_test.rb,spec/{**/}*_spec.rb}'],
35
- 'extra_doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}'],
36
- }
37
-
38
- metadata = defaults.merge(YAML.load_file('gemspec.yml'))
39
-
40
- gemspec.name = metadata.fetch('name',defaults[:name])
41
- gemspec.version = if metadata['version']
42
- metadata['version']
43
- elsif File.file?(version[:file])
44
- require File.join('.',version[:file])
45
- eval(version[:constant])
46
- end
47
-
48
- gemspec.summary = metadata.fetch('summary',metadata['description'])
49
- gemspec.description = metadata.fetch('description',metadata['summary'])
50
-
51
- case metadata['license']
52
- when Array
53
- gemspec.licenses = metadata['license']
54
- when String
55
- gemspec.license = metadata['license']
56
- end
57
-
58
- case metadata['authors']
59
- when Array
60
- gemspec.authors = metadata['authors']
61
- when String
62
- gemspec.author = metadata['authors']
63
- end
8
+ gem.name = gemspec.fetch('name')
9
+ gem.version = gemspec.fetch('version') do
10
+ lib_dir = File.join(File.dirname(__FILE__),'lib')
11
+ $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
64
12
 
65
- gemspec.email = metadata['email']
66
- gemspec.homepage = metadata['homepage']
13
+ require 'uri/query_params/version'
14
+ URI::QueryParams::VERSION
15
+ end
67
16
 
68
- case metadata['require_paths']
69
- when Array
70
- gemspec.require_paths = metadata['require_paths']
71
- when String
72
- gemspec.require_path = metadata['require_paths']
73
- end
17
+ gem.summary = gemspec['summary']
18
+ gem.description = gemspec['description']
19
+ gem.licenses = Array(gemspec['license'])
20
+ gem.authors = Array(gemspec['authors'])
21
+ gem.email = gemspec['email']
22
+ gem.homepage = gemspec['homepage']
23
+ gem.metadata = gemspec['metadata'] if gemspec['metadata']
74
24
 
75
- gemspec.files = filter_files[metadata['files']]
25
+ glob = lambda { |patterns| gem.files & Dir[*patterns] }
76
26
 
77
- gemspec.executables = metadata['executables']
78
- gemspec.extensions = metadata['extensions']
27
+ gem.files = `git ls-files`.split($/)
28
+ gem.files = glob[gemspec['files']] if gemspec['files']
79
29
 
80
- if Gem::VERSION < '1.7.'
81
- gemspec.default_executable = gemspec.executables.first
30
+ gem.executables = gemspec.fetch('executables') do
31
+ glob['bin/*'].map { |path| File.basename(path) }
82
32
  end
33
+ gem.default_executable = gem.executables.first if Gem::VERSION < '1.7.'
83
34
 
84
- gemspec.test_files = filter_files[metadata['test_files']]
85
-
86
- unless gemspec.files.include?('.document')
87
- gemspec.extra_rdoc_files = metadata['extra_doc_files']
88
- end
89
-
90
- gemspec.post_install_message = metadata['post_install_message']
91
- gemspec.requirements = metadata['requirements']
92
-
93
- if gemspec.respond_to?(:required_ruby_version=)
94
- gemspec.required_ruby_version = metadata['required_ruby_version']
95
- end
35
+ gem.extensions = glob[gemspec['extensions'] || 'ext/**/extconf.rb']
36
+ gem.test_files = glob[gemspec['test_files'] || '{test/{**/}*_test.rb']
37
+ gem.extra_rdoc_files = glob[gemspec['extra_doc_files'] || '*.{txt,md}']
96
38
 
97
- if gemspec.respond_to?(:required_rubygems_version=)
98
- gemspec.required_rubygems_version = metadata['required_ruby_version']
99
- end
39
+ gem.require_paths = Array(gemspec.fetch('require_paths') {
40
+ %w[ext lib].select { |dir| File.directory?(dir) }
41
+ })
100
42
 
101
- parse_versions = lambda { |versions|
102
- case versions
103
- when Array
104
- versions.map { |v| v.to_s }
105
- when String
106
- versions.split(/,\s*/)
107
- end
108
- }
43
+ gem.requirements = gemspec['requirements']
44
+ gem.required_ruby_version = gemspec['required_ruby_version']
45
+ gem.required_rubygems_version = gemspec['required_rubygems_version']
46
+ gem.post_install_message = gemspec['post_install_message']
109
47
 
110
- if metadata['dependencies']
111
- metadata['dependencies'].each do |name,versions|
112
- gemspec.add_dependency(name,parse_versions[versions])
113
- end
114
- end
48
+ split = lambda { |string| string.split(/,\s*/) }
115
49
 
116
- if metadata['runtime_dependencies']
117
- metadata['runtime_dependencies'].each do |name,versions|
118
- gemspec.add_runtime_dependency(name,parse_versions[versions])
50
+ if gemspec['dependencies']
51
+ gemspec['dependencies'].each do |name,versions|
52
+ gem.add_dependency(name,split[versions])
119
53
  end
120
54
  end
121
55
 
122
- if metadata['development_dependencies']
123
- metadata['development_dependencies'].each do |name,versions|
124
- gemspec.add_development_dependency(name,parse_versions[versions])
56
+ if gemspec['development_dependencies']
57
+ gemspec['development_dependencies'].each do |name,versions|
58
+ gem.add_development_dependency(name,split[versions])
125
59
  end
126
60
  end
127
61
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uri-query_params
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postmodern
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-29 00:00:00.000000000 Z
11
+ date: 2022-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,7 +28,10 @@ description: Allows access to the query component of the URI as a Hash.
28
28
  email: postmodern.mod3@gmail.com
29
29
  executables: []
30
30
  extensions: []
31
- extra_rdoc_files: []
31
+ extra_rdoc_files:
32
+ - ChangeLog.md
33
+ - LICENSE.txt
34
+ - README.md
32
35
  files:
33
36
  - ".document"
34
37
  - ".github/workflows/ruby.yml"
@@ -42,6 +45,11 @@ files:
42
45
  - Rakefile
43
46
  - gemspec.yml
44
47
  - lib/uri/query_params.rb
48
+ - lib/uri/query_params/core_ext.rb
49
+ - lib/uri/query_params/core_ext/addressable/uri.rb
50
+ - lib/uri/query_params/core_ext/uri.rb
51
+ - lib/uri/query_params/core_ext/uri/generic.rb
52
+ - lib/uri/query_params/core_ext/uri/http.rb
45
53
  - lib/uri/query_params/extensions.rb
46
54
  - lib/uri/query_params/extensions/addressable/uri.rb
47
55
  - lib/uri/query_params/extensions/uri.rb
@@ -49,9 +57,13 @@ files:
49
57
  - lib/uri/query_params/mixin.rb
50
58
  - lib/uri/query_params/query_params.rb
51
59
  - lib/uri/query_params/version.rb
52
- - spec/extensions/addressable/uri_spec.rb
60
+ - spec/core_ext/addressable/uri_spec.rb
61
+ - spec/core_ext/uri/generic_spec.rb
62
+ - spec/core_ext/uri/http_spec.rb
63
+ - spec/extensions/addressable/uri.rb
53
64
  - spec/extensions/uri/generic_spec.rb
54
- - spec/extensions/uri/http_spec.rb
65
+ - spec/extensions/uri_spec.rb
66
+ - spec/extensions_spec.rb
55
67
  - spec/query_params_mixin_examples.rb
56
68
  - spec/query_params_spec.rb
57
69
  - spec/spec_helper.rb
@@ -59,8 +71,13 @@ files:
59
71
  homepage: https://github.com/postmodern/uri-query_params
60
72
  licenses:
61
73
  - MIT
62
- metadata: {}
63
- post_install_message:
74
+ metadata:
75
+ documentation_uri: https://rubydoc.info/gems/uri-query_params
76
+ source_code_uri: https://github.com/postmodern/uri-query_params.rb
77
+ bug_tracker_uri: https://github.com/postmodern/uri-query_params.rb/issues
78
+ changelog_uri: https://github.com/postmodern/uri-query_params.rb/blob/master/ChangeLog.md
79
+ rubygems_mfa_required: 'true'
80
+ post_install_message:
64
81
  rdoc_options: []
65
82
  require_paths:
66
83
  - lib
@@ -68,19 +85,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
68
85
  requirements:
69
86
  - - ">="
70
87
  - !ruby/object:Gem::Version
71
- version: '0'
88
+ version: 2.0.0
72
89
  required_rubygems_version: !ruby/object:Gem::Requirement
73
90
  requirements:
74
91
  - - ">="
75
92
  - !ruby/object:Gem::Version
76
93
  version: '0'
77
94
  requirements: []
78
- rubygems_version: 3.1.4
79
- signing_key:
95
+ rubygems_version: 3.3.7
96
+ signing_key:
80
97
  specification_version: 4
81
98
  summary: Access the query parameters of a URI, just like $_GET in PHP.
82
- test_files:
83
- - spec/extensions/addressable/uri_spec.rb
84
- - spec/extensions/uri/generic_spec.rb
85
- - spec/extensions/uri/http_spec.rb
86
- - spec/query_params_spec.rb
99
+ test_files: []
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
- require 'query_params_mixin_examples'
3
- require 'uri/query_params/extensions/uri'
4
-
5
- describe URI::HTTP do
6
- let(:uri) { URI('http://www.example.com/page.php') }
7
-
8
- it_should_behave_like "URI::QueryParams::Mixin"
9
- end