librariesio-url-parser 1.0.7 → 1.0.9

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: 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: []