librariesio-url-parser 1.0.7 → 1.0.9

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: bae64bd33bdd5556d8d16472bf9c815813375f60254335b0e39c8e80a669249f
4
- data.tar.gz: 06b4b0e89906bcf89d8679e96c48028991a0f77eeb200950b617c02a2b8671ba
3
+ metadata.gz: aed18904c0a030a5bdab10a3717974e2fe62ef63ec5525cb9aa5944213da540b
4
+ data.tar.gz: 69c24ecc3ea131c7725a9ab97a433131a53972e2b4e66b5d5cf9854e6ab63a1b
5
5
  SHA512:
6
- metadata.gz: 19ab606c3ee731d48df907595b9a6ccaf01ded2dd4606928744766f729ea1718d776a1be481f12c9cae34f2e0b4b2109fc12ce895cc016b499c2767661c94cf0
7
- data.tar.gz: 3aab091fb8161ea1d928cfd51eddbfc66b9b8a6d8f1c446e247f1c3417a5908a27a07d14057656835a73d98d6e276ad08da1467f2dd394f6a1c5fbe2e6fd991d
6
+ metadata.gz: 529bd4550e2ec85f30ae870908ffd10931845da891d06ed138fbb0c9abe026e901b35a896b18c2a2b2b40cc1cdfdcd53527e38db1158ab4782e8349be06e092f
7
+ data.tar.gz: f8627e676157b0cdad2acfc2e5441f1a532bb39a68ef9164a1b6fed285b21fb719d8ec197dbc48dff67616648e8c83d750065713292a370d39bf24b19124cd85
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ # rubymine generated files
2
+ .idea
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- librariesio-url-parser (1.0.7)
4
+ librariesio-url-parser (1.0.9)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -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.7"
16
+ VERSION = "1.0.9"
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,8 +91,14 @@ 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
101
+ remove_quotes
85
102
  remove_brackets
86
103
  remove_anchors
87
104
  remove_querystring
@@ -99,8 +116,18 @@ class URLParser
99
116
  remove_git_scheme
100
117
  remove_extra_segments
101
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
102
124
  end
103
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.
104
131
  def format_url
105
132
  return nil if url.nil?
106
133
  return nil unless url.length == 2
@@ -190,4 +217,8 @@ class URLParser
190
217
  def remove_whitespace
191
218
  url.gsub!(/\s/, '')
192
219
  end
220
+
221
+ def remove_quotes
222
+ url.gsub!(/["']/, '')
223
+ end
193
224
  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.7
4
+ version: 1.0.9
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: 2022-10-07 00:00:00.000000000 Z
11
+ date: 2024-01-24 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: []
@@ -74,6 +74,7 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - ".circleci/config.yml"
77
+ - ".gitignore"
77
78
  - ".ruby-version"
78
79
  - Gemfile
79
80
  - Gemfile.lock
@@ -98,7 +99,7 @@ licenses:
98
99
  - AGPL-3.0
99
100
  metadata:
100
101
  rubygems_mfa_required: 'true'
101
- post_install_message:
102
+ post_install_message:
102
103
  rdoc_options: []
103
104
  require_paths:
104
105
  - lib
@@ -113,8 +114,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
114
  - !ruby/object:Gem::Version
114
115
  version: '0'
115
116
  requirements: []
116
- rubygems_version: 3.0.9
117
- signing_key:
117
+ rubygems_version: 3.0.3
118
+ signing_key:
118
119
  specification_version: 4
119
120
  summary: Parse the URL for various repositories tracked by libraries.io
120
121
  test_files: []