iri 0.1.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 87b71f1b546b3b5c62641549af0c0a448dfee41109519f3a9987f9e67b916948
4
+ data.tar.gz: 7102176c5f82ff8a05f5295233d74fff0d0e81400bf47f561763ee16d9916e60
5
+ SHA512:
6
+ metadata.gz: 4c931d32c782208e17e613dd27a98eea60a320dacfb279f35d6c24e73bdf809344e8fed4b7e24b8d5be8967662d34c2e9af7ccdd02b20139b56d7e8a6a021421
7
+ data.tar.gz: aed064a6106b224ce9cc063b36edbbc472e34050ce0207878c014fff0d793d42a9822a8488efba41dc769dabdcd71d1881f4eb19d5350c2d2bb86cd68b4c240d
data/.0pdd.yml ADDED
@@ -0,0 +1,9 @@
1
+ errors:
2
+ - yegor256@gmail.com
3
+ # alerts:
4
+ # github:
5
+ # - yegor256
6
+
7
+ tags:
8
+ - pdd
9
+ - bug
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ Gemfile.lock
2
+ *.gem
3
+ .bundle/
4
+ .DS_Store
5
+ rdoc/
6
+ .idea/
data/.pdd ADDED
@@ -0,0 +1,5 @@
1
+ --source=.
2
+ --verbose
3
+ --rule min-words:20
4
+ --rule min-estimate:15
5
+ --rule max-estimate:90
data/.rubocop.yml ADDED
@@ -0,0 +1,21 @@
1
+ AllCops:
2
+ DisplayCopNames: true
3
+ TargetRubyVersion: 2.5
4
+
5
+ Metrics/ClassLength:
6
+ Exclude:
7
+ - 'test/*.rb'
8
+ Layout/EmptyLineAfterGuardClause:
9
+ Enabled: false
10
+ Layout/MultilineMethodCallIndentation:
11
+ Enabled: false
12
+ Metrics/AbcSize:
13
+ Max: 30
14
+ Metrics/MethodLength:
15
+ Max: 30
16
+ Metrics/CyclomaticComplexity:
17
+ Max: 12
18
+ Metrics/PerceivedComplexity:
19
+ Max: 12
20
+ Layout/EndOfLine:
21
+ EnforcedStyle: lf
data/.rultor.yml ADDED
@@ -0,0 +1,26 @@
1
+ assets:
2
+ rubygems.yml: zerocracy/home#assets/rubygems.yml
3
+ install: |-
4
+ export GEM_HOME=~/.ruby
5
+ export GEM_PATH=$GEM_HOME:$GEM_PATH
6
+ release:
7
+ script: |-
8
+ bundle install
9
+ bundle exec rake
10
+ rm -rf *.gem
11
+ sed -i "s/0\.0\.0/${tag}/g" iri.gemspec
12
+ git add iri.gemspec
13
+ git commit -m "Version set to ${tag}"
14
+ gem build iri.gemspec
15
+ chmod 0600 ../rubygems.yml
16
+ gem push *.gem --config-file ../rubygems.yml
17
+ commanders:
18
+ - yegor256
19
+ architect:
20
+ - yegor256
21
+ merge:
22
+ commanders: []
23
+ script: |-
24
+ bundle install
25
+ bundle exec rake
26
+ deploy: {}
data/.travis.yml ADDED
@@ -0,0 +1,12 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.6.0
4
+ branches:
5
+ only:
6
+ - master
7
+ install:
8
+ - bundle install
9
+ script:
10
+ - set -e
11
+ - rake
12
+
data/Gemfile ADDED
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2019 Yegor Bugayenko
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the 'Software'), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ source 'https://rubygems.org'
24
+ ruby '~>2.3'
25
+ gemspec
data/README.md ADDED
@@ -0,0 +1,62 @@
1
+ [![EO principles respected here](http://www.elegantobjects.org/badge.svg)](http://www.elegantobjects.org)
2
+ [![DevOps By Rultor.com](http://www.rultor.com/b/yegor256/iri)](http://www.rultor.com/p/yegor256/iri)
3
+ [![We recommend RubyMine](http://www.elegantobjects.org/rubymine.svg)](https://www.jetbrains.com/ruby/)
4
+
5
+ [![Build Status](https://travis-ci.org/yegor256/iri.svg)](https://travis-ci.org/yegor256/iri)
6
+ [![Build status](https://ci.appveyor.com/api/projects/status/5hj65olpn2tds4al?svg=true)](https://ci.appveyor.com/project/yegor256/iri)
7
+ [![Gem Version](https://badge.fury.io/rb/iri.svg)](http://badge.fury.io/rb/iri)
8
+ [![Maintainability](https://api.codeclimate.com/v1/badges/7018d2fe438103828685/maintainability)](https://codeclimate.com/github/yegor256/iri/maintainability)
9
+ [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/yegor256/iri/master/frames)
10
+
11
+ Class `Iri` helps you build a URI and then modify its
12
+ parts via a simple fluent interface:
13
+
14
+ ```ruby
15
+ url = Iri.new('http://google.com/')
16
+ .add(q: 'books about OOP', limit: 50)
17
+ .del(:q) # remove this query parameter
18
+ .del('limit') # remove this one too
19
+ .over(q: 'books about tennis', limit: 10) # replace these params
20
+ .scheme('https') # replace 'http' with 'https'
21
+ .host('localhost') # replace the host name
22
+ .port('443') # replace the port
23
+ .to_s # convert it to a string
24
+ ```
25
+
26
+ Install it:
27
+
28
+ ```bash
29
+ $ gem install iri
30
+ ```
31
+
32
+ Or add this to your `Gemfile`:
33
+
34
+ ```bash
35
+ gem 'iri'
36
+ ```
37
+
38
+ Pay attention, it is not a parser. The only functionality this gem provides
39
+ is _building_ URIs. It is very convenient to use inside
40
+ [HAML](http://haml.info/tutorial.html), for example:
41
+
42
+ ```haml
43
+ - iri = Iri.new(request.url)
44
+ %a{href: iri.over(offset: offset + 10)} Next Page
45
+ %a{href: iri.over(offset: offset - 10)} Previous Page
46
+ ```
47
+
48
+ That's it.
49
+
50
+ ## How to contribute
51
+
52
+ Read [these guidelines](https://www.yegor256.com/2014/04/15/github-guidelines.html).
53
+ Make sure you build is green before you contribute
54
+ your pull request. You will need to have [Ruby](https://www.ruby-lang.org/en/) 2.3+ and
55
+ [Bundler](https://bundler.io/) installed. Then:
56
+
57
+ ```
58
+ $ bundle update
59
+ $ bundle exec rake
60
+ ```
61
+
62
+ If it's clean and you don't see any error messages, submit your pull request.
data/Rakefile ADDED
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2019 Yegor Bugayenko
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the 'Software'), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ require 'rubygems'
24
+ require 'rake'
25
+ require 'rake/clean'
26
+
27
+ CLEAN = FileList['coverage']
28
+
29
+ def name
30
+ @name ||= File.basename(Dir['*.gemspec'].first, '.*')
31
+ end
32
+
33
+ def version
34
+ Gem::Specification.load(Dir['*.gemspec'].first).version
35
+ end
36
+
37
+ task default: %i[clean test rubocop]
38
+
39
+ require 'rake/testtask'
40
+ Rake::TestTask.new do |test|
41
+ test.libs << 'lib' << 'test'
42
+ test.pattern = 'test/**/test_*.rb'
43
+ test.verbose = false
44
+ end
45
+
46
+ require 'rdoc/task'
47
+ RDoc::Task.new do |rdoc|
48
+ rdoc.main = 'README.md'
49
+ rdoc.rdoc_dir = 'rdoc'
50
+ rdoc.rdoc_files.include('README.md', 'lib/**/*.rb')
51
+ end
52
+
53
+ require 'rubocop/rake_task'
54
+ RuboCop::RakeTask.new do |task|
55
+ task.fail_on_error = true
56
+ task.requires << 'rubocop-rspec'
57
+ end
data/appveyor.yml ADDED
@@ -0,0 +1,36 @@
1
+ version: '{build}'
2
+ skip_tags: true
3
+ clone_depth: 10
4
+ branches:
5
+ only:
6
+ - master
7
+ except:
8
+ - gh-pages
9
+ os: Windows Server 2012
10
+ environment:
11
+ matrix:
12
+ - ruby_version: "25-x64"
13
+ install:
14
+ - ps: |
15
+ $Env:PATH = "C:\Ruby${Env:ruby_version}\bin;${Env:PATH}"
16
+ if ($Env:ruby_version -match "^23" ) {
17
+ # RubyInstaller; download OpenSSL headers from OpenKnapsack Project
18
+ $Env:openssl_dir = "C:\Ruby${Env:ruby_version}"
19
+ appveyor DownloadFile http://dl.bintray.com/oneclick/OpenKnapsack/x64/openssl-1.0.2j-x64-windows.tar.lzma
20
+ 7z e openssl-1.0.2j-x64-windows.tar.lzma
21
+ 7z x -y -oC:\Ruby${Env:ruby_version} openssl-1.0.2j-x64-windows.tar
22
+ } else {
23
+ # RubyInstaller2; openssl package seems to be installed already
24
+ $Env:openssl_dir = "C:\msys64\mingw64"
25
+ }
26
+ - bundle config --local path vendor/bundle
27
+ - bundle config build.openssl --with-openssl-dir=%openssl_dir%
28
+ - ruby -v
29
+ - bundle -v
30
+ build_script:
31
+ - bundle update
32
+ - bundle install
33
+ test_script:
34
+ - bundle exec rake --quiet
35
+ cache:
36
+ - vendor/bundle
data/iri.gemspec ADDED
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ # (The MIT License)
4
+ #
5
+ # Copyright (c) 2019 Yegor Bugayenko
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the 'Software'), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+
25
+ require 'English'
26
+ Gem::Specification.new do |s|
27
+ s.specification_version = 2 if s.respond_to? :specification_version=
28
+ if s.respond_to? :required_rubygems_version=
29
+ s.required_rubygems_version = Gem::Requirement.new('>= 0')
30
+ end
31
+ s.rubygems_version = '2.5'
32
+ s.required_ruby_version = '>=2.5'
33
+ s.name = 'iri'
34
+ s.version = '0.1.0'
35
+ s.license = 'MIT'
36
+ s.summary = 'Simple Immutable Ruby URI Builder'
37
+ s.description = 'Simple Immutable Ruby URI Builder'
38
+ s.authors = ['Yegor Bugayenko']
39
+ s.email = 'yegor256@gmail.com'
40
+ s.homepage = 'http://github.com/yegor256/iri'
41
+ s.files = `git ls-files`.split($RS)
42
+ s.test_files = s.files.grep(%r{^(test)/})
43
+ s.rdoc_options = ['--charset=UTF-8']
44
+ s.extra_rdoc_files = ['README.md']
45
+ s.add_development_dependency 'minitest', '5.11.3'
46
+ s.add_development_dependency 'rake', '12.3.1'
47
+ s.add_development_dependency 'rdoc', '4.3.0'
48
+ s.add_development_dependency 'rubocop', '0.62.0'
49
+ s.add_development_dependency 'rubocop-rspec', '1.31.0'
50
+ end
data/lib/iri.rb ADDED
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ # (The MIT License)
4
+ #
5
+ # Copyright (c) 2019 Yegor Bugayenko
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the 'Software'), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+
25
+ require 'uri'
26
+ require 'cgi'
27
+
28
+ # It is a simple URI builder.
29
+ #
30
+ # require 'iri'
31
+ # url = Iri.new('http://google.com/')
32
+ # .add(q: 'books about OOP', limit: 50)
33
+ # .del(:q) // remove this query parameter
34
+ # .del('limit') // remove this one too
35
+ # .over(q: 'books about tennis', limit: 10) // replace these params
36
+ # .scheme('https')
37
+ # .host('localhost')
38
+ # .port('443')
39
+ # .to_s
40
+ #
41
+ # For more information read
42
+ # {README}[https://github.com/yegor256/iri/blob/master/README.md] file.
43
+ #
44
+ # Author:: Yegor Bugayenko (yegor256@gmail.com)
45
+ # Copyright:: Copyright (c) 2019 Yegor Bugayenko
46
+ # License:: MIT
47
+ class Iri
48
+ # Makes a new object.
49
+ def initialize(uri)
50
+ @uri = URI(uri)
51
+ end
52
+
53
+ def to_s
54
+ @uri.to_s
55
+ end
56
+
57
+ def to_uri
58
+ @uri.clone
59
+ end
60
+
61
+ def add(hash)
62
+ modify_query do |params|
63
+ hash.each do |k, v|
64
+ params[k.to_s] = [] unless params[k.to_s]
65
+ params[k.to_s] << v
66
+ end
67
+ end
68
+ end
69
+
70
+ def del(*keys)
71
+ modify_query do |params|
72
+ keys.each do |k|
73
+ params.delete(k.to_s)
74
+ end
75
+ end
76
+ end
77
+
78
+ def over(hash)
79
+ modify_query do |params|
80
+ hash.each do |k, v|
81
+ params[k.to_s] = [] unless params[k]
82
+ params[k.to_s] = [v]
83
+ end
84
+ end
85
+ end
86
+
87
+ def scheme(val)
88
+ modify do |c|
89
+ c.scheme = val
90
+ end
91
+ end
92
+
93
+ def host(val)
94
+ modify do |c|
95
+ c.host = val
96
+ end
97
+ end
98
+
99
+ def port(val)
100
+ modify do |c|
101
+ c.port = val
102
+ end
103
+ end
104
+
105
+ private
106
+
107
+ def modify
108
+ c = @uri.clone
109
+ yield c
110
+ Iri.new(c)
111
+ end
112
+
113
+ def modify_query
114
+ modify do |c|
115
+ params = CGI.parse(@uri.query || '').map { |p, a| [p.to_s, a.clone] }.to_h
116
+ yield(params)
117
+ c.query = URI.encode_www_form(params)
118
+ end
119
+ end
120
+ end
data/test/test_iri.rb ADDED
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ # (The MIT License)
4
+ #
5
+ # Copyright (c) 2019 Yegor Bugayenko
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the 'Software'), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+
25
+ require 'minitest/autorun'
26
+ require_relative '../lib/iri'
27
+
28
+ # Iri test.
29
+ # Author:: Yegor Bugayenko (yegor256@gmail.com)
30
+ # Copyright:: Copyright (c) 2019 Yegor Bugayenko
31
+ # License:: MIT
32
+ class IriTest < Minitest::Test
33
+ def test_builds_uri
34
+ url = Iri.new('http://google.com/')
35
+ .add(q: 'books about OOP', limit: 50)
36
+ .del(:q)
37
+ .del('limit')
38
+ .over(q: 'books about tennis', limit: 10)
39
+ .scheme('https')
40
+ .host('localhost')
41
+ .port('443')
42
+ .to_s
43
+ assert_equal('https://localhost:443/?q=books+about+tennis&limit=10', url)
44
+ end
45
+
46
+ def test_replaces_scheme
47
+ assert_equal(
48
+ 'https://google.com/',
49
+ Iri.new('http://google.com/').scheme('https').to_s
50
+ )
51
+ end
52
+
53
+ def test_replaces_host
54
+ assert_equal(
55
+ 'http://localhost/',
56
+ Iri.new('http://google.com/').host('localhost').to_s
57
+ )
58
+ end
59
+
60
+ def test_replaces_port
61
+ assert_equal(
62
+ 'http://localhost:443/',
63
+ Iri.new('http://localhost/').port(443).to_s
64
+ )
65
+ end
66
+
67
+ def test_adds_query_param
68
+ assert_equal(
69
+ 'http://google/?a=1&a=3&b=2',
70
+ Iri.new('http://google/').add(a: 1, b: 2).add(a: 3).to_s
71
+ )
72
+ assert_equal(
73
+ 'http://google/?%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82+%D0%B4%D1%80%D1%83%D0%B3=%D0%BA%D0%B0%D0%BA+%D0%B4%D0%B5%D0%BB%D0%B0%3F',
74
+ Iri.new('http://google/').add('привет друг' => 'как дела?').to_s
75
+ )
76
+ end
77
+
78
+ def test_removes_query_param
79
+ assert_equal(
80
+ 'http://google/?b=2&c=3',
81
+ Iri.new('http://google/?a=1&b=2&c=3&a=3').del('a').del('x').to_s
82
+ )
83
+ end
84
+
85
+ def test_replaces_query_param
86
+ assert_equal(
87
+ 'http://google/?a=hey&b=2&c=3',
88
+ Iri.new('http://google/?a=1&b=2&c=3&a=33').over(a: 'hey').to_s
89
+ )
90
+ end
91
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: iri
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yegor Bugayenko
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-04-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 5.11.3
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 5.11.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 12.3.1
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 12.3.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: rdoc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 4.3.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 4.3.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.62.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 0.62.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 1.31.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 1.31.0
83
+ description: Simple Immutable Ruby URI Builder
84
+ email: yegor256@gmail.com
85
+ executables: []
86
+ extensions: []
87
+ extra_rdoc_files:
88
+ - README.md
89
+ files:
90
+ - ".0pdd.yml"
91
+ - ".gitignore"
92
+ - ".pdd"
93
+ - ".rubocop.yml"
94
+ - ".rultor.yml"
95
+ - ".travis.yml"
96
+ - Gemfile
97
+ - README.md
98
+ - Rakefile
99
+ - appveyor.yml
100
+ - iri.gemspec
101
+ - lib/iri.rb
102
+ - test/test_iri.rb
103
+ homepage: http://github.com/yegor256/iri
104
+ licenses:
105
+ - MIT
106
+ metadata: {}
107
+ post_install_message:
108
+ rdoc_options:
109
+ - "--charset=UTF-8"
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '2.5'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubygems_version: 3.0.1
124
+ signing_key:
125
+ specification_version: 2
126
+ summary: Simple Immutable Ruby URI Builder
127
+ test_files:
128
+ - test/test_iri.rb