iri 0.5.1 → 0.7.0

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: db8863ed27f231ba61cdff169239ea612436272a7150f036c9796fc2d90c0834
4
- data.tar.gz: e67d192cf430e94f64c3aab87f4f064b6c4915e28c8c6d2dba82afda8aeaaeba
3
+ metadata.gz: 564c361b6ff96ad33b06d606342683aeab545505bb5baf8f2ba7c34da333a7d5
4
+ data.tar.gz: b337674a82e1d37852642d793546cebfd1776cd855ee62b12f9bec5d4d92d77c
5
5
  SHA512:
6
- metadata.gz: d9be16a1579273c5796c63a121eb39d03061bfaae5e1fad217c76fe13699cb46f64d0c59c568227a6853cccec41f45b880a4c2ecc3f2e957516c38d5b6f05215
7
- data.tar.gz: 1330a503f87585553fb4e507d7c81f3f0ef8c02583838b136110dfcc243cfa5da14a9b91bd8360a6e0df43f4bd719fdb63b4c1804a49cd5dcc798db161e7a813
6
+ metadata.gz: 80de9feb3d57cb52b62c67af835b7dc0c98e4d83917fd9916940892e0fdf599038a3e0dd8f4ff36fe7e09489b159210dcc830f9df1b96b3b135edafed8f05335
7
+ data.tar.gz: c3052e3ea6c3fa4e3fcfa4cd4986c0374a59157adbd7d1a34b4981e5ef175e4e9f37e87652fd593aa4390325995ef3f77b10369cb13a21b2bc1b204e66d4ef1b
data/.gitattributes ADDED
@@ -0,0 +1,7 @@
1
+ # Check out all text files in UNIX format, with LF as end of line
2
+ # Don't change this file. If you have any ideas about it, please
3
+ # submit a separate issue about it and we'll discuss.
4
+
5
+ * text=auto eol=lf
6
+ *.java ident
7
+ *.xml ident
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: codecov
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ jobs:
8
+ codecov:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v3
12
+ - uses: ruby/setup-ruby@v1
13
+ with:
14
+ ruby-version: 2.7
15
+ - run: bundle update
16
+ - run: bundle exec rake
17
+ - uses: codecov/codecov-action@v3
18
+ with:
19
+ file: coverage/.resultset.json
20
+ fail_ci_if_error: true
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: rake
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+ branches:
9
+ - master
10
+ jobs:
11
+ test:
12
+ name: test
13
+ strategy:
14
+ matrix:
15
+ os: [ubuntu-20.04, macos-12, windows-2022]
16
+ ruby: [2.7, 3.1]
17
+ runs-on: ${{ matrix.os }}
18
+ steps:
19
+ - uses: actions/checkout@v3
20
+ - uses: ruby/setup-ruby@v1
21
+ with:
22
+ ruby-version: ${{ matrix.ruby }}
23
+ - run: bundle update
24
+ - run: bundle exec rake
data/.rubocop.yml CHANGED
@@ -1,10 +1,11 @@
1
1
  AllCops:
2
2
  DisplayCopNames: true
3
3
  TargetRubyVersion: 2.2
4
+ SuggestExtensions: false
5
+ NewCops: enable
4
6
 
5
7
  Metrics/ClassLength:
6
- Exclude:
7
- - 'test/*.rb'
8
+ Max: 200
8
9
  Layout/EmptyLineAfterGuardClause:
9
10
  Enabled: false
10
11
  Layout/MultilineMethodCallIndentation:
data/.rultor.yml CHANGED
@@ -1,11 +1,13 @@
1
+ docker:
2
+ image: yegor256/rultor-image:1.21.0
1
3
  assets:
2
4
  rubygems.yml: yegor256/home#assets/rubygems.yml
3
5
  install: |-
4
- export GEM_HOME=~/.ruby
5
- export GEM_PATH=$GEM_HOME:$GEM_PATH
6
- bundle install
6
+ pdd -f /dev/null
7
+ sudo bundle install --no-color "--gemfile=$(pwd)/Gemfile"
7
8
  release:
8
9
  script: |-
10
+ [[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1
9
11
  bundle exec rake
10
12
  rm -rf *.gem
11
13
  sed -i "s/0\.0\.0/${tag}/g" iri.gemspec
@@ -17,8 +19,3 @@ release:
17
19
  merge:
18
20
  script: |-
19
21
  bundle exec rake
20
- deploy:
21
- script: |-
22
- echo Nothing to deploy
23
- exit 1
24
-
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2019-2021 Yegor Bugayenko
3
+ # Copyright (c) 2019-2023 Yegor Bugayenko
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the 'Software'), to deal
@@ -21,5 +21,11 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  source 'https://rubygems.org'
24
- ruby '~>2.2'
25
24
  gemspec
25
+
26
+ gem 'minitest', '5.19.0', require: false
27
+ gem 'rake', '13.0.6', require: false
28
+ gem 'rdoc', '6.5.0', require: false
29
+ gem 'rubocop', '1.56.0', require: false
30
+ gem 'rubocop-rspec', '2.23.2', require: false
31
+ gem 'simplecov', '0.22.0', require: false
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2019-2021 Yegor Bugayenko
3
+ Copyright (c) 2019-2023 Yegor Bugayenko
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -4,14 +4,13 @@
4
4
  [![DevOps By Rultor.com](http://www.rultor.com/b/yegor256/iri)](http://www.rultor.com/p/yegor256/iri)
5
5
  [![We recommend RubyMine](https://www.elegantobjects.org/rubymine.svg)](https://www.jetbrains.com/ruby/)
6
6
 
7
- [![Build Status](https://travis-ci.org/yegor256/iri.svg)](https://travis-ci.org/yegor256/iri)
8
- [![Build status](https://ci.appveyor.com/api/projects/status/5hj65olpn2tds4al?svg=true)](https://ci.appveyor.com/project/yegor256/iri)
7
+ [![rake](https://github.com/yegor256/iri/actions/workflows/rake.yml/badge.svg)](https://github.com/yegor256/iri/actions/workflows/rake.yml)
9
8
  [![Gem Version](https://badge.fury.io/rb/iri.svg)](http://badge.fury.io/rb/iri)
10
9
  [![Maintainability](https://api.codeclimate.com/v1/badges/7018d2fe438103828685/maintainability)](https://codeclimate.com/github/yegor256/iri/maintainability)
11
10
  [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/yegor256/iri/master/frames)
12
-
13
11
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/iri/blob/master/LICENSE.txt)
14
12
  [![Test Coverage](https://img.shields.io/codecov/c/github/yegor256/iri.svg)](https://codecov.io/github/yegor256/iri?branch=master)
13
+ ![Lines of code](https://img.shields.io/tokei/lines/github/yegor256/iri)
15
14
  [![Hits-of-Code](https://hitsofcode.com/github/yegor256/iri)](https://hitsofcode.com/view/github/yegor256/iri)
16
15
 
17
16
  The class [`Iri`](https://www.rubydoc.info/github/yegor256/iri/master/Iri)
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2019-2021 Yegor Bugayenko
3
+ # Copyright (c) 2019-2023 Yegor Bugayenko
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the 'Software'), to deal
@@ -34,7 +34,7 @@ def version
34
34
  Gem::Specification.load(Dir['*.gemspec'].first).version
35
35
  end
36
36
 
37
- task default: %i[clean test rubocop]
37
+ task default: %i[clean test rubocop copyright]
38
38
 
39
39
  require 'rake/testtask'
40
40
  Rake::TestTask.new do |test|
@@ -55,3 +55,11 @@ RuboCop::RakeTask.new do |task|
55
55
  task.fail_on_error = true
56
56
  task.requires << 'rubocop-rspec'
57
57
  end
58
+
59
+ task :copyright do
60
+ sh "grep -q -r '#{Date.today.strftime('%Y')}' \
61
+ --include '*.rb' \
62
+ --include '*.txt' \
63
+ --include 'Rakefile' \
64
+ ."
65
+ end
data/iri.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # (The MIT License)
4
4
  #
5
- # Copyright (c) 2019-2021 Yegor Bugayenko
5
+ # Copyright (c) 2019-2023 Yegor Bugayenko
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the 'Software'), to deal
@@ -24,29 +24,21 @@
24
24
 
25
25
  require 'English'
26
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'
27
+ s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
32
28
  s.required_ruby_version = '>=2.2'
33
29
  s.name = 'iri'
34
- s.version = '0.5.1'
30
+ s.version = '0.7.0'
35
31
  s.license = 'MIT'
36
32
  s.summary = 'Simple Immutable Ruby URI Builder'
37
- s.description = 'Class Iri helps you build a URI and then modify its \
38
- parts via a simple fluent interface.'
33
+ s.description = "Class Iri helps you build a URI and then modify its \
34
+ parts via a simple immutable fluent interface. It always returns a new \
35
+ object instead of changing the existing one. This makes the object \
36
+ safer and much easier for reuse."
39
37
  s.authors = ['Yegor Bugayenko']
40
38
  s.email = 'yegor256@gmail.com'
41
39
  s.homepage = 'https://github.com/yegor256/iri'
42
40
  s.files = `git ls-files`.split($RS)
43
- s.test_files = s.files.grep(%r{^(test)/})
44
41
  s.rdoc_options = ['--charset=UTF-8']
45
42
  s.extra_rdoc_files = ['README.md']
46
- s.add_development_dependency 'codecov', '0.2.11'
47
- s.add_development_dependency 'minitest', '5.11.3'
48
- s.add_development_dependency 'rake', '12.3.3'
49
- s.add_development_dependency 'rdoc', '6.3.1'
50
- s.add_development_dependency 'rubocop', '0.62.0'
51
- s.add_development_dependency 'rubocop-rspec', '1.31.0'
43
+ s.metadata['rubygems_mfa_required'] = 'true'
52
44
  end
data/lib/iri.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # (The MIT License)
4
4
  #
5
- # Copyright (c) 2019-2021 Yegor Bugayenko
5
+ # Copyright (c) 2019-2023 Yegor Bugayenko
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the 'Software'), to deal
@@ -42,7 +42,7 @@ require 'cgi'
42
42
  # {README}[https://github.com/yegor256/iri/blob/master/README.md] file.
43
43
  #
44
44
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
45
- # Copyright:: Copyright (c) 2019-2021 Yegor Bugayenko
45
+ # Copyright:: Copyright (c) 2019-2023 Yegor Bugayenko
46
46
  # License:: MIT
47
47
  class Iri
48
48
  # When URI is not valid.
@@ -65,6 +65,11 @@ class Iri
65
65
  @uri.to_s
66
66
  end
67
67
 
68
+ # Inspect it, like a string can be inspected.
69
+ def inspect
70
+ @uri.to_s.inspect
71
+ end
72
+
68
73
  # Convert it to an object of class +URI+.
69
74
  def to_uri
70
75
  the_uri.clone
data/renovate.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3
+ "extends": [
4
+ "config:base"
5
+ ]
6
+ }
data/test/test__helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2019-2021 Yegor Bugayenko
3
+ # Copyright (c) 2019-2023 Yegor Bugayenko
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the 'Software'), to deal
@@ -20,11 +20,7 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
22
 
23
- STDOUT.sync = true
23
+ $stdout.sync = true
24
24
 
25
25
  require 'simplecov'
26
26
  SimpleCov.start
27
- if ENV['CI'] == 'true'
28
- require 'codecov'
29
- SimpleCov.formatter = SimpleCov::Formatter::Codecov
30
- end
data/test/test_iri.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # (The MIT License)
4
4
  #
5
- # Copyright (c) 2019-2021 Yegor Bugayenko
5
+ # Copyright (c) 2019-2023 Yegor Bugayenko
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the 'Software'), to deal
@@ -27,7 +27,7 @@ require_relative '../lib/iri'
27
27
 
28
28
  # Iri test.
29
29
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
30
- # Copyright:: Copyright (c) 2019-2021 Yegor Bugayenko
30
+ # Copyright:: Copyright (c) 2019-2023 Yegor Bugayenko
31
31
  # License:: MIT
32
32
  class IriTest < Minitest::Test
33
33
  def test_builds_uri
@@ -60,6 +60,13 @@ class IriTest < Minitest::Test
60
60
  )
61
61
  end
62
62
 
63
+ def test_inspects_iri
64
+ assert_equal(
65
+ '"https://openai.com"',
66
+ Iri.new('https://openai.com').inspect
67
+ )
68
+ end
69
+
63
70
  def test_replaces_scheme
64
71
  assert_equal(
65
72
  'https://google.com/',
metadata CHANGED
@@ -1,102 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-13 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: codecov
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '='
18
- - !ruby/object:Gem::Version
19
- version: 0.2.11
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '='
25
- - !ruby/object:Gem::Version
26
- version: 0.2.11
27
- - !ruby/object:Gem::Dependency
28
- name: minitest
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '='
32
- - !ruby/object:Gem::Version
33
- version: 5.11.3
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
39
- - !ruby/object:Gem::Version
40
- version: 5.11.3
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '='
46
- - !ruby/object:Gem::Version
47
- version: 12.3.3
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '='
53
- - !ruby/object:Gem::Version
54
- version: 12.3.3
55
- - !ruby/object:Gem::Dependency
56
- name: rdoc
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
61
- version: 6.3.1
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 6.3.1
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '='
74
- - !ruby/object:Gem::Version
75
- version: 0.62.0
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '='
81
- - !ruby/object:Gem::Version
82
- version: 0.62.0
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop-rspec
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '='
88
- - !ruby/object:Gem::Version
89
- version: 1.31.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '='
95
- - !ruby/object:Gem::Version
96
- version: 1.31.0
97
- description: |-
98
- Class Iri helps you build a URI and then modify its \
99
- parts via a simple fluent interface.
11
+ date: 2023-08-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Class Iri helps you build a URI and then modify its parts via a simple
14
+ immutable fluent interface. It always returns a new object instead of changing the
15
+ existing one. This makes the object safer and much easier for reuse.
100
16
  email: yegor256@gmail.com
101
17
  executables: []
102
18
  extensions: []
@@ -104,25 +20,28 @@ extra_rdoc_files:
104
20
  - README.md
105
21
  files:
106
22
  - ".0pdd.yml"
23
+ - ".gitattributes"
24
+ - ".github/workflows/codecov.yml"
25
+ - ".github/workflows/rake.yml"
107
26
  - ".gitignore"
108
27
  - ".pdd"
109
28
  - ".rubocop.yml"
110
29
  - ".rultor.yml"
111
- - ".travis.yml"
112
30
  - Gemfile
113
31
  - LICENSE.txt
114
32
  - README.md
115
33
  - Rakefile
116
- - appveyor.yml
117
34
  - iri.gemspec
118
35
  - lib/iri.rb
119
36
  - logo.svg
37
+ - renovate.json
120
38
  - test/test__helper.rb
121
39
  - test/test_iri.rb
122
40
  homepage: https://github.com/yegor256/iri
123
41
  licenses:
124
42
  - MIT
125
- metadata: {}
43
+ metadata:
44
+ rubygems_mfa_required: 'true'
126
45
  post_install_message:
127
46
  rdoc_options:
128
47
  - "--charset=UTF-8"
@@ -139,10 +58,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
58
  - !ruby/object:Gem::Version
140
59
  version: '0'
141
60
  requirements: []
142
- rubygems_version: 3.1.2
61
+ rubygems_version: 3.2.15
143
62
  signing_key:
144
- specification_version: 2
63
+ specification_version: 4
145
64
  summary: Simple Immutable Ruby URI Builder
146
- test_files:
147
- - test/test__helper.rb
148
- - test/test_iri.rb
65
+ test_files: []
data/.travis.yml DELETED
@@ -1,15 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.6.0
4
- cache: bundler
5
- branches:
6
- only:
7
- - master
8
- install:
9
- - travis_retry bundle update
10
- - gem install pdd -v 0.20.5
11
- script:
12
- - pdd -f /dev/null
13
- - bundle exec rake
14
- after_success:
15
- - "bash <(curl -s https://codecov.io/bash)"
data/appveyor.yml DELETED
@@ -1,36 +0,0 @@
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