iri 0.6.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/codecov.yml +2 -2
- data/.github/workflows/rake.yml +1 -1
- data/.rubocop.yml +1 -2
- data/.rultor.yml +3 -2
- data/Gemfile +6 -6
- data/LICENSE.txt +1 -1
- data/README.md +1 -2
- data/Rakefile +1 -1
- data/iri.gemspec +6 -4
- data/lib/iri.rb +12 -2
- data/test/test__helper.rb +1 -1
- data/test/test_iri.rb +21 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f999bd94bb431514584216e518edd721ce449e2af0f7cc4921073bc0b3d33a2
|
4
|
+
data.tar.gz: 8b73e9a02dadc087f7024ccc020ce3a1f1e6f816a612edaca4fb4fa92507db24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35accdc23c65209ca3436dfa04cb6d026e745fd0d9a4893f7ad4683ba80ef06da5e7a54d8918fb4db7e0692c9e44384d0a606ee09b4186c038f517e83695ea5e
|
7
|
+
data.tar.gz: c74f2a7818bc367b283fe39e16a721525cd080fdd5f56c348fb52244b92273ef2e66d19e2bee71310453731c75605f6b3de3529abd2f15a2e9b2d3b1e80057b3
|
@@ -8,13 +8,13 @@ jobs:
|
|
8
8
|
codecov:
|
9
9
|
runs-on: ubuntu-latest
|
10
10
|
steps:
|
11
|
-
- uses: actions/checkout@
|
11
|
+
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
|
12
12
|
- uses: ruby/setup-ruby@v1
|
13
13
|
with:
|
14
14
|
ruby-version: 2.7
|
15
15
|
- run: bundle update
|
16
16
|
- run: bundle exec rake
|
17
|
-
- uses: codecov/codecov-action@
|
17
|
+
- uses: codecov/codecov-action@v4.0.0-beta.3
|
18
18
|
with:
|
19
19
|
file: coverage/.resultset.json
|
20
20
|
fail_ci_if_error: true
|
data/.github/workflows/rake.yml
CHANGED
data/.rubocop.yml
CHANGED
data/.rultor.yml
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
docker:
|
2
|
-
image: yegor256/rultor-image:1.
|
2
|
+
image: yegor256/rultor-image:1.22.0
|
3
3
|
assets:
|
4
4
|
rubygems.yml: yegor256/home#assets/rubygems.yml
|
5
5
|
install: |-
|
6
6
|
pdd -f /dev/null
|
7
|
-
|
7
|
+
bundle install --no-color
|
8
8
|
release:
|
9
|
+
pre: false
|
9
10
|
script: |-
|
10
11
|
[[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1
|
11
12
|
bundle exec rake
|
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (c) 2019-
|
3
|
+
# Copyright (c) 2019-2024 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
|
@@ -23,9 +23,9 @@
|
|
23
23
|
source 'https://rubygems.org'
|
24
24
|
gemspec
|
25
25
|
|
26
|
-
gem 'minitest', '5.
|
27
|
-
gem 'rake', '13.0
|
28
|
-
gem 'rdoc', '6.
|
29
|
-
gem 'rubocop', '1.
|
30
|
-
gem 'rubocop-rspec', '2.
|
26
|
+
gem 'minitest', '5.20.0', require: false
|
27
|
+
gem 'rake', '13.1.0', require: false
|
28
|
+
gem 'rdoc', '6.6.2', require: false
|
29
|
+
gem 'rubocop', '1.59.0', require: false
|
30
|
+
gem 'rubocop-rspec', '2.25.0', require: false
|
31
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-
|
3
|
+
Copyright (c) 2019-2024 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
@@ -10,7 +10,6 @@
|
|
10
10
|
[![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://rubydoc.info/github/yegor256/iri/master/frames)
|
11
11
|
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/iri/blob/master/LICENSE.txt)
|
12
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)
|
14
13
|
[![Hits-of-Code](https://hitsofcode.com/github/yegor256/iri)](https://hitsofcode.com/view/github/yegor256/iri)
|
15
14
|
|
16
15
|
The class [`Iri`](https://www.rubydoc.info/github/yegor256/iri/master/Iri)
|
@@ -23,7 +22,7 @@ url = Iri.new('http://google.com/')
|
|
23
22
|
.append('find').append('me') # -> http://google.com/find/me
|
24
23
|
.add(q: 'books about OOP', limit: 50) # -> ?q=books+about+OOP&limit=50
|
25
24
|
.del(:q) # remove this query parameter
|
26
|
-
.del('limit') # remove
|
25
|
+
.del('limit', 'speed') # also remove these two
|
27
26
|
.over(q: 'books about tennis', limit: 10) # replace these params
|
28
27
|
.scheme('https') # replace 'http' with 'https'
|
29
28
|
.host('localhost') # replace the host name
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (c) 2019-
|
3
|
+
# Copyright (c) 2019-2024 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/iri.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# (The MIT License)
|
4
4
|
#
|
5
|
-
# Copyright (c) 2019-
|
5
|
+
# Copyright (c) 2019-2024 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,11 +27,13 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
28
28
|
s.required_ruby_version = '>=2.2'
|
29
29
|
s.name = 'iri'
|
30
|
-
s.version = '0.
|
30
|
+
s.version = '0.8.0'
|
31
31
|
s.license = 'MIT'
|
32
32
|
s.summary = 'Simple Immutable Ruby URI Builder'
|
33
|
-
s.description =
|
34
|
-
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."
|
35
37
|
s.authors = ['Yegor Bugayenko']
|
36
38
|
s.email = 'yegor256@gmail.com'
|
37
39
|
s.homepage = 'https://github.com/yegor256/iri'
|
data/lib/iri.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# (The MIT License)
|
4
4
|
#
|
5
|
-
# Copyright (c) 2019-
|
5
|
+
# Copyright (c) 2019-2024 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,12 +42,15 @@ 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-
|
45
|
+
# Copyright:: Copyright (c) 2019-2024 Yegor Bugayenko
|
46
46
|
# License:: MIT
|
47
47
|
class Iri
|
48
48
|
# When URI is not valid.
|
49
49
|
class InvalidURI < StandardError; end
|
50
50
|
|
51
|
+
# When .add(), .over(), or .del() arguments are not valid.
|
52
|
+
class InvalidArguments < StandardError; end
|
53
|
+
|
51
54
|
# Makes a new object.
|
52
55
|
#
|
53
56
|
# You can even ignore the argument, which will produce an empty URI.
|
@@ -65,6 +68,11 @@ class Iri
|
|
65
68
|
@uri.to_s
|
66
69
|
end
|
67
70
|
|
71
|
+
# Inspect it, like a string can be inspected.
|
72
|
+
def inspect
|
73
|
+
@uri.to_s.inspect
|
74
|
+
end
|
75
|
+
|
68
76
|
# Convert it to an object of class +URI+.
|
69
77
|
def to_uri
|
70
78
|
the_uri.clone
|
@@ -83,6 +91,7 @@ class Iri
|
|
83
91
|
# Iri.new('https://google.com').del(:q).add(q: 'test')
|
84
92
|
#
|
85
93
|
def add(hash)
|
94
|
+
raise InvalidArguments unless hash.is_a?(Hash)
|
86
95
|
modify_query do |params|
|
87
96
|
hash.each do |k, v|
|
88
97
|
params[k.to_s] = [] unless params[k.to_s]
|
@@ -110,6 +119,7 @@ class Iri
|
|
110
119
|
# Iri.new('https://google.com?q=test').over(q: 'hey you!')
|
111
120
|
#
|
112
121
|
def over(hash)
|
122
|
+
raise InvalidArguments unless hash.is_a?(Hash)
|
113
123
|
modify_query do |params|
|
114
124
|
hash.each do |k, v|
|
115
125
|
params[k.to_s] = [] unless params[k]
|
data/test/test__helper.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright (c) 2019-
|
3
|
+
# Copyright (c) 2019-2024 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/test/test_iri.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# (The MIT License)
|
4
4
|
#
|
5
|
-
# Copyright (c) 2019-
|
5
|
+
# Copyright (c) 2019-2024 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-
|
30
|
+
# Copyright:: Copyright (c) 2019-2024 Yegor Bugayenko
|
31
31
|
# License:: MIT
|
32
32
|
class IriTest < Minitest::Test
|
33
33
|
def test_builds_uri
|
@@ -49,6 +49,18 @@ class IriTest < Minitest::Test
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
+
def test_incorrect_call_of_add
|
53
|
+
assert_raises Iri::InvalidArguments do
|
54
|
+
Iri.new('https://example.com/').add('hello5')
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_incorrect_call_of_over
|
59
|
+
assert_raises Iri::InvalidArguments do
|
60
|
+
Iri.new('https://example5.com/').over('boom44')
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
52
64
|
def test_broken_uri_in_safe_mode
|
53
65
|
Iri.new('https://example.com/>>>').add(a: 1)
|
54
66
|
end
|
@@ -60,6 +72,13 @@ class IriTest < Minitest::Test
|
|
60
72
|
)
|
61
73
|
end
|
62
74
|
|
75
|
+
def test_inspects_iri
|
76
|
+
assert_equal(
|
77
|
+
'"https://openai.com"',
|
78
|
+
Iri.new('https://openai.com').inspect
|
79
|
+
)
|
80
|
+
end
|
81
|
+
|
63
82
|
def test_replaces_scheme
|
64
83
|
assert_equal(
|
65
84
|
'https://google.com/',
|
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.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:
|
11
|
+
date: 2024-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
14
|
-
|
15
|
-
|
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.
|
16
16
|
email: yegor256@gmail.com
|
17
17
|
executables: []
|
18
18
|
extensions: []
|
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
58
|
- !ruby/object:Gem::Version
|
59
59
|
version: '0'
|
60
60
|
requirements: []
|
61
|
-
rubygems_version: 3.
|
61
|
+
rubygems_version: 3.4.10
|
62
62
|
signing_key:
|
63
63
|
specification_version: 4
|
64
64
|
summary: Simple Immutable Ruby URI Builder
|