absolutely 3.1.0 → 4.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23de4e0e0d12b6a0d1f432cb8bbe82e9a8edd0228e4b012492e128c3538a12da
4
- data.tar.gz: 1d75fec77e7ae6a8410cfcce593dbe00182740d7878a1ea3cf846221b30cf01d
3
+ metadata.gz: 5371bb5e8e56ff6966a5b629cbb908693030acc7c6c2e091a5e378a42fe3c161
4
+ data.tar.gz: 06ddd29f3b17b975f6d6e5f0456a0d6b4f17e5aa6fe21ce24eaac19623007d00
5
5
  SHA512:
6
- metadata.gz: 9346f4f872d8866dfe6e3dca84d253feb7e245ce5a402e2bc17a42c85be85ff981143a5ec9f72399e705f203876f54494a33f4dd81c1aafeff9a8f366edde9d2
7
- data.tar.gz: eb494b638a2f0f1f4a4dd0de0346829a7ef2a65a8211dd564dba34b5b9789e202830b1c3dc703f6a1b9a83e3265d7a13a3da3c28941dfdf9f86528133ffe4d41
6
+ metadata.gz: 26db5cebaef7246e5390bafbe7006a125ad932dfe402a4cd24ee527625da111b34a4c012d412e31284c3c9ceeceacec32cc60056296c0fb5073e2e912f51425d
7
+ data.tar.gz: 5ab65c11499651640bd49d259082dc8307b2626c07b47271252d490e910113f5acab0de21067031d6eaea3cce0d938d38192fdea4a8f0e69bb2ee73adb656bb8
data/.reek.yml CHANGED
@@ -1,9 +1,6 @@
1
1
  detectors:
2
2
  IrresponsibleModule:
3
3
  enabled: false
4
- TooManyStatements:
5
- exclude:
6
- - Absolutely::URI#set_instance_vars
7
4
 
8
5
  exclude_paths:
9
6
  - vendor/
@@ -2,9 +2,8 @@ require:
2
2
  - rubocop-performance
3
3
  - rubocop-rspec
4
4
 
5
- Layout/HashAlignment:
6
- EnforcedColonStyle: table
7
- EnforcedHashRocketStyle: table
5
+ AllCops:
6
+ NewCops: enable
8
7
 
9
8
  Layout/LineLength:
10
9
  Enabled: false
@@ -16,9 +15,6 @@ Metrics/BlockLength:
16
15
  Naming/RescuedExceptionsVariableName:
17
16
  PreferredName: exception
18
17
 
19
- Style/Alias:
20
- EnforcedStyle: prefer_alias_method
21
-
22
18
  Style/Documentation:
23
19
  Enabled: false
24
20
 
@@ -1 +1 @@
1
- 2.4.9
1
+ 2.4.10
data/.simplecov CHANGED
@@ -2,9 +2,11 @@ require 'simplecov-console'
2
2
 
3
3
  formatters = [SimpleCov::Formatter::HTMLFormatter]
4
4
 
5
+ # rubocop:disable Style/IfUnlessModifier
5
6
  if RSpec.configuration.files_to_run.length > 1
6
7
  formatters << SimpleCov::Formatter::Console
7
8
  end
9
+ # rubocop:enable Style/IfUnlessModifier
8
10
 
9
11
  SimpleCov.start do
10
12
  formatter SimpleCov::Formatter::MultiFormatter.new(formatters)
@@ -1,46 +1,53 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.0.0 / 2020-05-13
4
+
5
+ - **Breaking Change:** Remove alias from `to_absolute_uri` to `to_abs` (b4df234)
6
+ - Improve inline documentation and refactor gem code (bb0456e)
7
+ - Move development dependencies to Gemfile per current Bundler convention (3c2f579)
8
+ - Update development Ruby version to 2.4.10 (6c79003)
9
+
3
10
  ## 3.1.0 / 2020-01-20
4
11
 
5
- - Expand supported Ruby versions to include 2.7 ([e0273b5](https://github.com/jgarber623/absolutely/commit/e0273b5)).
12
+ - Expand supported Ruby versions to include 2.7 (e0273b5)
6
13
 
7
14
  ## 3.0.1 / 2019-08-31
8
15
 
9
- - Update Addressable gem ([b257f75](https://github.com/jgarber623/absolutely/commit/b257f75)).
10
- - Update project Ruby version to 2.4.9 ([a14d29b](https://github.com/jgarber623/absolutely/commit/a14d29b)).
11
- - Update development dependencies.
16
+ - Update Addressable gem (b257f75)
17
+ - Update project Ruby version to 2.4.9 (a14d29b)
18
+ - Update development dependencies
12
19
 
13
20
  ## 3.0.0 / 2019-05-28
14
21
 
15
- - Return normalized `relative_uri` in `to_abs` when `relative_uri` is an absolute URL ([81261e9](https://github.com/jgarber623/absolutely/commit/81261e9)).
22
+ - Return normalized `relative_uri` in `to_abs` when `relative_uri` is an absolute URL (81261e9)
16
23
 
17
24
  ## 2.1.0 / 2019-05-01
18
25
 
19
- - Rename `to_absolute_uri` method to `to_abs` ([d14e33f](https://github.com/jgarber623/absolutely/commit/d14e33f)).
20
- - Add `inspect` instance method to `Absolutely::URI` ([e4e7e5a](https://github.com/jgarber623/absolutely/commit/e4e7e5a)).
26
+ - Rename `to_absolute_uri` method to `to_abs` (d14e33f)
27
+ - Add `inspect` instance method to `Absolutely::URI` (e4e7e5a)
21
28
 
22
29
  ## 2.0.0 / 2019-04-25
23
30
 
24
- - The `URI` class' `base` and `relative` methods are now read-only ([7879f78](https://github.com/jgarber623/absolutely/commit/7879f78)).
25
- - Add Reek and configuration ([fb60f9c](https://github.com/jgarber623/absolutely/commit/fb60f9c)).
31
+ - The `URI` class' `base` and `relative` methods are now read-only (7879f78)
32
+ - Add Reek and configuration (fb60f9c)
26
33
 
27
34
  ## 1.1.2 / 2019-01-03
28
35
 
29
- - Expand supported Ruby versions to include 2.6 ([866d58a](https://github.com/jgarber623/absolutely/commit/866d58a)).
36
+ - Expand supported Ruby versions to include 2.6 (866d58a)
30
37
 
31
38
  ## 1.1.1 / 2018-11-11
32
39
 
33
- - Liberalizes dependency constraints ([e0bc056](https://github.com/jgarber623/absolutely/commit/e0bc056)).
40
+ - Liberalizes dependency constraints (e0bc056)
34
41
 
35
42
  ## 1.1.0 / 2018-07-05
36
43
 
37
- - Sets `base` URI's path to `/` if empty to conform with browser behavior ([b0f657a](https://github.com/jgarber623/absolutely/commit/b0f657a)).
38
- - Adds new tests from the [indieweb/php-mf2 URL test suite](https://github.com/indieweb/php-mf2/blob/master/tests/Mf2/URLTest.php) ([0b6417b](https://github.com/jgarber623/absolutely/commit/0b6417b)).
44
+ - Sets `base` URI's path to `/` if empty to conform with browser behavior (b0f657a)
45
+ - Adds new tests from the [indieweb/php-mf2 URL test suite](https://github.com/indieweb/php-mf2/blob/master/tests/Mf2/URLTest.php) (0b6417b)
39
46
 
40
47
  ## 1.0.0 / 2018-07-05
41
48
 
42
- - **Breaking Change:** Return value passed as `relative` if `relative` is to determined to be an absolute URI, regardless of the value passed as `base` ([e3996eb](https://github.com/jgarber623/absolutely/commit/e3996eb)).
43
- - Updates documentation to demonstrate new `relative` parameter behavior.
49
+ - **Breaking Change:** Return value passed as `relative` if `relative` is to determined to be an absolute URI, regardless of the value passed as `base` (e3996eb)
50
+ - Updates documentation to demonstrate new `relative` parameter behavior
44
51
 
45
52
  ## 0.1.0 / 2018-07-04
46
53
 
@@ -8,9 +8,9 @@ There are a couple ways you can help improve Absolutely:
8
8
 
9
9
  ## Getting Started
10
10
 
11
- Absolutely is developed using Ruby 2.4.9 and is additionally tested against Ruby 2.5, 2.6, and 2.7 using [Travis CI](https://travis-ci.com/jgarber623/absolutely).
11
+ Absolutely is developed using Ruby 2.4.10 and is additionally tested against Ruby 2.5, 2.6, and 2.7 using [Travis CI](https://travis-ci.com/jgarber623/absolutely).
12
12
 
13
- Before making changes to Absolutely, you'll want to install Ruby 2.4.9. It's recommended that you use a Ruby version managment tool like [rbenv](https://github.com/rbenv/rbenv), [chruby](https://github.com/postmodern/chruby), or [rvm](https://github.com/rvm/rvm). Once you've installed Ruby 2.4.9 using your method of choice, install the project's gems by running:
13
+ Before making changes to Absolutely, you'll want to install Ruby 2.4.10. It's recommended that you use a Ruby version managment tool like [rbenv](https://github.com/rbenv/rbenv), [chruby](https://github.com/postmodern/chruby), or [rvm](https://github.com/rvm/rvm). Once you've installed Ruby 2.4.10 using your method of choice, install the project's gems by running:
14
14
 
15
15
  ```sh
16
16
  bundle install
data/Gemfile CHANGED
@@ -2,3 +2,13 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in absolutely.gemspec
4
4
  gemspec
5
+
6
+ gem 'pry-byebug', '~> 3.9'
7
+ gem 'rake', '~> 13.0'
8
+ gem 'reek', '~> 6.0'
9
+ gem 'rspec', '~> 3.9'
10
+ gem 'rubocop', '~> 0.83.0'
11
+ gem 'rubocop-performance', '~> 1.5'
12
+ gem 'rubocop-rspec', '~> 1.39'
13
+ gem 'simplecov', '~> 0.18.5'
14
+ gem 'simplecov-console', '~> 0.7.2'
data/README.md CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  Before installing and using Absolutely, you'll want to have [Ruby](https://www.ruby-lang.org) 2.4 (or newer) installed. It's recommended that you use a Ruby version managment tool like [rbenv](https://github.com/rbenv/rbenv), [chruby](https://github.com/postmodern/chruby), or [rvm](https://github.com/rvm/rvm).
20
20
 
21
- Absolutely is developed using Ruby 2.4.9 and is additionally tested against Ruby 2.5, 2.6, and 2.7 using [Travis CI](https://travis-ci.com/jgarber623/absolutely).
21
+ Absolutely is developed using Ruby 2.4.10 and is additionally tested against Ruby 2.5, 2.6, and 2.7 using [Travis CI](https://travis-ci.com/jgarber623/absolutely).
22
22
 
23
23
  ## Installation
24
24
 
@@ -1,10 +1,7 @@
1
- lib = File.expand_path('lib', __dir__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
-
4
- require 'absolutely/version'
1
+ require_relative 'lib/absolutely/version'
5
2
 
6
3
  Gem::Specification.new do |spec|
7
- spec.required_ruby_version = ['>= 2.4', '< 2.8']
4
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.4', '< 2.8')
8
5
 
9
6
  spec.name = 'absolutely'
10
7
  spec.version = Absolutely::VERSION
@@ -16,23 +13,14 @@ Gem::Specification.new do |spec|
16
13
  spec.homepage = 'https://github.com/jgarber623/absolutely'
17
14
  spec.license = 'MIT'
18
15
 
19
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(bin|spec)/}) }
16
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
17
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(bin|spec)/}) }
18
+ end
20
19
 
21
20
  spec.require_paths = ['lib']
22
21
 
23
- spec.metadata = {
24
- 'bug_tracker_uri' => "#{spec.homepage}/issues",
25
- 'changelog_uri' => "#{spec.homepage}/blob/v#{spec.version}/CHANGELOG.md"
26
- }
27
-
28
- spec.add_development_dependency 'rake', '~> 13.0'
29
- spec.add_development_dependency 'reek', '~> 5.6'
30
- spec.add_development_dependency 'rspec', '~> 3.9'
31
- spec.add_development_dependency 'rubocop', '~> 0.79.0'
32
- spec.add_development_dependency 'rubocop-performance', '~> 1.5'
33
- spec.add_development_dependency 'rubocop-rspec', '~> 1.37'
34
- spec.add_development_dependency 'simplecov', '~> 0.17.1'
35
- spec.add_development_dependency 'simplecov-console', '~> 0.6.0'
22
+ spec.metadata['bug_tracker_uri'] = "#{spec.homepage}/issues"
23
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/v#{spec.version}/CHANGELOG.md"
36
24
 
37
25
  spec.add_runtime_dependency 'addressable', '~> 2.7'
38
26
  end
@@ -7,11 +7,28 @@ require 'absolutely/uri'
7
7
 
8
8
  module Absolutely
9
9
  class << self
10
+ # Convert a relative path to an absolute URI.
11
+ #
12
+ # @param base [String]
13
+ # @param relative [String]
14
+ # @return [String]
15
+ #
16
+ # @example
17
+ # Absolutely.to_abs(base: 'https://example.com', relative: '/foo')
18
+ # #=> "https://example.com/foo"
10
19
  def to_abs(base:, relative:)
11
20
  uri(base: base, relative: relative).to_abs
12
21
  end
13
- alias_method :to_absolute_uri, :to_abs
14
22
 
23
+ # Create an Absolutely::URI from a base URI and a relative path.
24
+ #
25
+ # @param base [String]
26
+ # @param relative [String]
27
+ # @return [Absolutely::URI]
28
+ #
29
+ # uri = Absolutely.uri(base: 'https://example.com', relative: '/foo')
30
+ # puts uri.to_abs
31
+ # #=> "https://example.com/foo"
15
32
  def uri(base:, relative:)
16
33
  URI.new(base: base, relative: relative)
17
34
  end
@@ -1,20 +1,51 @@
1
1
  module Absolutely
2
2
  class URI
3
- attr_reader :base, :base_uri, :relative, :relative_uri
4
-
3
+ attr_reader :base, :relative
4
+
5
+ # Create an Absolutely::URI from a base URI and a relative path.
6
+ #
7
+ # @param base [String]
8
+ # @param relative [String]
9
+ # @raise [Absolutely::ArgumentError]
10
+ # @raise [Absolutely::InvalidURIError]
11
+ #
12
+ # @example
13
+ # uri = Absolutely::URI.new(base: 'https://example.com', relative: '/foo')
14
+ # puts uri.to_abs
15
+ # #=> "https://example.com/foo"
5
16
  def initialize(base:, relative:)
6
17
  raise ArgumentError, "base must be a String (given #{base.class.name})" unless base.is_a?(String)
7
18
  raise ArgumentError, "relative must be a String (given #{relative.class.name})" unless relative.is_a?(String)
8
19
 
9
- set_instance_vars(base, relative)
20
+ @base = base
21
+ @relative = relative
22
+
23
+ base_uri
24
+ relative_uri
10
25
 
11
26
  raise ArgumentError, 'base must be an absolute URL (e.g. https://example.com)' unless base_uri.absolute?
27
+ rescue Addressable::URI::InvalidURIError => exception
28
+ raise InvalidURIError, exception
29
+ end
30
+
31
+ # @return [Addressable::URI]
32
+ def base_uri
33
+ @base_uri ||= Addressable::URI.parse(base)
12
34
  end
13
35
 
36
+ # @return [String]
14
37
  def inspect
15
- format("#<#{self.class.name}:%#0x>", object_id)
38
+ format("#<#{self.class.name}:%#0x base: #{base.inspect}, relative: #{relative.inspect}>", object_id)
39
+ end
40
+
41
+ # @return [Addressable::URI]
42
+ def relative_uri
43
+ @relative_uri ||= Addressable::URI.parse(relative)
16
44
  end
17
45
 
46
+ # Convert a relative path to an absolute URI.
47
+ #
48
+ # @return [String]
18
49
  def to_abs
19
50
  return relative_uri.normalize.to_s if relative_uri.absolute?
20
51
 
@@ -22,18 +53,5 @@ module Absolutely
22
53
 
23
54
  (base_uri + relative_uri).to_s
24
55
  end
25
- alias_method :to_absolute_uri, :to_abs
26
-
27
- private
28
-
29
- def set_instance_vars(base, relative)
30
- @base = base
31
- @relative = relative
32
-
33
- @base_uri = Addressable::URI.parse(base)
34
- @relative_uri = Addressable::URI.parse(relative)
35
- rescue Addressable::URI::InvalidURIError => exception
36
- raise InvalidURIError, exception
37
- end
38
56
  end
39
57
  end
@@ -1,3 +1,3 @@
1
1
  module Absolutely
2
- VERSION = '3.1.0'.freeze
2
+ VERSION = '4.0.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,127 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: absolutely
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Garber
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-20 00:00:00.000000000 Z
11
+ date: 2020-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '13.0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '13.0'
27
- - !ruby/object:Gem::Dependency
28
- name: reek
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '5.6'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '5.6'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.9'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '3.9'
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.79.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.79.0
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop-performance
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '1.5'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '1.5'
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.37'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '1.37'
97
- - !ruby/object:Gem::Dependency
98
- name: simplecov
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 0.17.1
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 0.17.1
111
- - !ruby/object:Gem::Dependency
112
- name: simplecov-console
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 0.6.0
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 0.6.0
125
13
  - !ruby/object:Gem::Dependency
126
14
  name: addressable
127
15
  requirement: !ruby/object:Gem::Requirement
@@ -168,7 +56,7 @@ licenses:
168
56
  - MIT
169
57
  metadata:
170
58
  bug_tracker_uri: https://github.com/jgarber623/absolutely/issues
171
- changelog_uri: https://github.com/jgarber623/absolutely/blob/v3.1.0/CHANGELOG.md
59
+ changelog_uri: https://github.com/jgarber623/absolutely/blob/v4.0.0/CHANGELOG.md
172
60
  post_install_message:
173
61
  rdoc_options: []
174
62
  require_paths:
@@ -187,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
187
75
  - !ruby/object:Gem::Version
188
76
  version: '0'
189
77
  requirements: []
190
- rubygems_version: 3.0.6
78
+ rubygems_version: 3.1.3
191
79
  signing_key:
192
80
  specification_version: 4
193
81
  summary: Convert relative paths to absolute URIs.