librariesio-url-parser 1.0.8 → 1.0.10

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: 00d52ef052704194c97850963c18576440d6bede749f172f525b7738a0f5e79c
4
- data.tar.gz: 2de0473ca0d0fd03e98ced3c6c2438be1691a4fe8617ea91da4d11783142efdc
3
+ metadata.gz: 13dcf367366e2bb9727f9e810ad38a9b6cb41eecf1cfb9a3b2d655067acf6e73
4
+ data.tar.gz: ca7a9fc70d37d58839af903d2905c60dbf38fb3adc502027eef54a6a5f2ffc92
5
5
  SHA512:
6
- metadata.gz: 17340548393bb17653360e84d467f7488aec88a601cc0e7afae0deefc9ffdcba04829734dc5de2ca48971cc24a42d7063261398b5d38b39253ee27b68fc37eb1
7
- data.tar.gz: 00267ffa423156ac519fa4a484210edbb5677eedd57ab0e0a2073ecb978b1dc948a1839df68c50f772b501e9081326df019b6ca1fde1ad462fc18b994971b769
6
+ metadata.gz: 0f845dfec84e2d285a9f4a07e62df8d2de1b6a8c9ddf389449f964c7e2522fbbfa017553049898a1d4febe4fa457830de5af53808c29b1a9f3805bd80840ea66
7
+ data.tar.gz: e77275f149adcbe4c7676d494bd124ba1379f262673d21a997aed7788d72c3b86fedd8ae7e000110404ddba8f96d1c4013149e4a8e0a08dcda047383b7f8c55e
data/.circleci/config.yml CHANGED
@@ -1,19 +1,19 @@
1
1
  version: 2.1
2
2
  orbs:
3
- ruby: circleci/ruby@1.8.0
3
+ ruby: circleci/ruby@2.1.3
4
4
 
5
5
  jobs:
6
6
  test:
7
7
  docker:
8
- - image: cimg/ruby:2.6.5
8
+ - image: cimg/ruby:3.1.5
9
9
  executor: ruby/default
10
10
  steps:
11
- - checkout
12
- - run:
13
- name: Which bundler?
14
- command: bundle -v
15
- - ruby/install-deps
16
- - ruby/rspec-test
11
+ - checkout
12
+ - run:
13
+ name: Which bundler?
14
+ command: bundle -v
15
+ - ruby/install-deps
16
+ - ruby/rspec-test
17
17
 
18
18
  workflows:
19
19
  version: 2.1
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.5
1
+ 3.1.5
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
1
  source "https://rubygems.org"
2
- ruby "2.6.5"
2
+ ruby "3.1.5"
3
3
 
4
4
  # Specify your gem's dependencies in librariesio-url-parser.gemspec
5
5
  gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- librariesio-url-parser (1.0.8)
4
+ librariesio-url-parser (1.0.10)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -40,7 +40,7 @@ DEPENDENCIES
40
40
  rspec_junit_formatter (~> 0.5)
41
41
 
42
42
  RUBY VERSION
43
- ruby 2.6.5p114
43
+ ruby 3.1.5p252
44
44
 
45
45
  BUNDLED WITH
46
46
  2.1.4
@@ -13,5 +13,5 @@ require_relative "android_googlesource_url_parser"
13
13
  require_relative "sourceforge_url_parser"
14
14
 
15
15
  module LibrariesioURLParser
16
- VERSION = "1.0.8"
16
+ VERSION = "1.0.10"
17
17
  end
data/lib/url_parser.rb CHANGED
@@ -11,13 +11,16 @@ class URLParser
11
11
  @url = url.to_s.dup
12
12
  end
13
13
 
14
+ # Clean the URL and format the path segments after the domain
15
+ #
16
+ # @return String Path segments after the domain joined by a "/"
14
17
  def parse
15
18
  return nil unless parseable?
16
19
 
17
20
  if url = extractable_early?
18
21
  url
19
22
  else
20
- clean_url
23
+ clean_url!
21
24
  format_url
22
25
  end
23
26
  end
@@ -39,6 +42,10 @@ class URLParser
39
42
  end
40
43
  end
41
44
 
45
+ # Clean and parse the URL string returning all path segments following
46
+ # the domain.
47
+ #
48
+ # @return String Domain with URL path segments appended
42
49
  def parse_to_full_url
43
50
  path = parse
44
51
  return nil if path.nil? || path.empty?
@@ -46,13 +53,17 @@ class URLParser
46
53
  [full_domain, path].join('/')
47
54
  end
48
55
 
56
+ # Clean and parse the URL string returning the first path following the domain.
57
+ #
58
+ # @return [String, nil] Domain with the lone user path segment appended. If the path resolved
59
+ # to more than one segment nil is returned since it is considered an invalid URL for a user.
49
60
  def parse_to_full_user_url
50
61
  return nil unless parseable?
51
62
 
52
- path = clean_url
53
- return nil unless path.length == 1
63
+ clean_url!
64
+ return nil unless url.length == 1
54
65
 
55
- [full_domain, path].join('/')
66
+ [full_domain, url].join('/')
56
67
  end
57
68
 
58
69
  def self.case_sensitive?
@@ -80,7 +91,12 @@ class URLParser
80
91
 
81
92
  attr_accessor :url
82
93
 
83
- def clean_url
94
+ # Clean up the string URL to find the non domain pieces of the URL and pass back
95
+ # to the specific parser class.
96
+ ##
97
+ # @return [Array<String>, nil] Array of URL path segments following the domain or nil if the
98
+ # URL string does not contain the valid domain name.
99
+ def clean_url!
84
100
  remove_whitespace
85
101
  remove_quotes
86
102
  remove_brackets
@@ -100,8 +116,18 @@ class URLParser
100
116
  remove_git_scheme
101
117
  remove_extra_segments
102
118
  remove_git_extension
119
+
120
+ # url should have been transformed to an array during the various method calls
121
+ # The method is transforming the initialized url in place so any callers should
122
+ # reference url directly instead of expecting a return here.
123
+ url
103
124
  end
104
125
 
126
+ # Join URL path segments for owner and repository name together with a "/" character.
127
+ #
128
+ #
129
+ # @return [String, nil] URL path segments joined by "/" or nil if there are not separate owner and
130
+ # repository name segments.
105
131
  def format_url
106
132
  return nil if url.nil?
107
133
  return nil unless url.length == 2
@@ -136,7 +162,7 @@ class URLParser
136
162
  def extractable_early?
137
163
  return false if website_url?
138
164
 
139
- match = url.match(/([\w\.@\:\-_~]+)\.#{domain_regex}\/([\w\.@\:\-\_\~]+)/i)
165
+ match = url.match(/([\w\.\@\:\-\~]+)\.#{domain_regex}\/([\w\.\@\:\-\~]+)/i)
140
166
  if match && match.length == 4
141
167
  return "#{match[1]}/#{match[3]}"
142
168
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librariesio-url-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Pace
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-23 00:00:00.000000000 Z
11
+ date: 2024-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -66,7 +66,7 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.14.1
69
- description:
69
+ description:
70
70
  email:
71
71
  - matt.pace@tidelift.com
72
72
  executables: []
@@ -99,7 +99,7 @@ licenses:
99
99
  - AGPL-3.0
100
100
  metadata:
101
101
  rubygems_mfa_required: 'true'
102
- post_install_message:
102
+ post_install_message:
103
103
  rdoc_options: []
104
104
  require_paths:
105
105
  - lib
@@ -114,8 +114,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  - !ruby/object:Gem::Version
115
115
  version: '0'
116
116
  requirements: []
117
- rubygems_version: 3.0.3
118
- signing_key:
117
+ rubygems_version: 3.3.27
118
+ signing_key:
119
119
  specification_version: 4
120
120
  summary: Parse the URL for various repositories tracked by libraries.io
121
121
  test_files: []