librariesio-url-parser 1.0.5 → 1.0.6

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: b7678a02447f9ecb298aca33105ed4a0a686258b39e1dbbf6069cadcc8bb5ee9
4
- data.tar.gz: f5c7d4fa5dca4858e46f7740b33f4e54f67230e2801a2e2cfb00bfae7f1aad6a
3
+ metadata.gz: 0552e054ac1b05ff114f7d95cf7281508ee65500356810168c5d4c56587524d6
4
+ data.tar.gz: 1a1dc645db555eb8935de55c6cf11ecebe3448bcb0325a49b9e850114006c92e
5
5
  SHA512:
6
- metadata.gz: 940d8eccc878fe614347f7e18f381825f531cf2f14a0f22834bbd342e8ebf6be13e4daeb5c07e2627446ba5d5df76af8b634285731479ce6fe4d38807fb29326
7
- data.tar.gz: 928daf9d94eeed789e059e099dd6346e7c6d1b4cbaee1f788d8d36dc2420fdd232c74a7ed68f051aa91efa26d1d6636107d89deee06e082d0fd7c2f6398b90ca
6
+ metadata.gz: c479b95802f3d673fa23fbdd8fcc67fd36ed51c2fdf9f640147ebaa276466f9a8112111ba8a796ceb918e9df1b97d97dabcbfa2abe7e6df63e2a8911a53b5837
7
+ data.tar.gz: b9daf84d0a9347979489f1289d6608ea4f44125a607b37cba2d5065db56be2e4b551349f1cd585ee9f520f192d516dd264b8a91faa0c7da03fb92fd601689c7e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- librariesio-url-parser (1.0.5)
4
+ librariesio-url-parser (1.0.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  class AndroidGooglesourceUrlParser < URLParser
3
+ CASE_SENSITIVE = true
4
+
3
5
  private
4
6
 
5
7
  def full_domain
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  class ApacheGitWipUrlParser < URLParser
3
+ CASE_SENSITIVE = true
4
+
3
5
  private
4
6
 
5
7
  def full_domain
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  class ApacheGitboxUrlParser < URLParser
3
+ CASE_SENSITIVE = true
4
+
3
5
  private
4
6
 
5
7
  def full_domain
@@ -2,6 +2,8 @@
2
2
  class ApacheSvnUrlParser < URLParser
3
3
  SUBDIR_NAMES = %w[trunk tags branches].freeze
4
4
  VALID_PATHS = %w[viewvc viewcvs\.cgi repos\/asf].freeze
5
+ CASE_SENSITIVE = true
6
+
5
7
  private
6
8
 
7
9
  def full_domain
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  class EclipseGitUrlParser < URLParser
3
+ CASE_SENSITIVE = true
4
+
3
5
  private
4
6
 
5
7
  def full_domain
@@ -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.5"
16
+ VERSION = "1.0.6"
17
17
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  class SourceforgeUrlParser < URLParser
3
3
  PROJECT_PATHS = %w[projects p].freeze
4
+
4
5
  private
5
6
 
6
7
  def full_domain
data/lib/url_parser.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class URLParser
4
+ CASE_SENSITIVE = false
5
+
4
6
  def self.parse(url)
5
7
  new(url).parse
6
8
  end
@@ -31,7 +33,7 @@ class URLParser
31
33
  def self.try_all(url)
32
34
  # run through all the subclasses and try their parse method
33
35
  # exit the reduce at the first non nil value and return that
34
- descendants.reduce(nil) do |_, n|
36
+ all_parsers.reduce(nil) do |_, n|
35
37
  r = n.parse_to_full_url(url)
36
38
  break r if r
37
39
  end
@@ -53,6 +55,27 @@ class URLParser
53
55
  [full_domain, path].join('/')
54
56
  end
55
57
 
58
+ def self.case_sensitive?
59
+ self::CASE_SENSITIVE
60
+ end
61
+
62
+ # This computation is memoized because it is expensive. This prevents use cases which require using
63
+ # .try_all in a tight loop. However, if this class is required directly (without requiring any subparsers),
64
+ # this method will memoize an empty array. It is recommended to simply require librariesio-url-parser.rb directly.
65
+ # This is the default behavior when installing this gem.
66
+ def self.all_parsers
67
+ @all_parsers ||=
68
+ begin
69
+ all_parsers = []
70
+ ObjectSpace.each_object(singleton_class) do |k|
71
+ next if k.singleton_class?
72
+
73
+ all_parsers.unshift k unless k == self
74
+ end
75
+ all_parsers
76
+ end
77
+ end
78
+
56
79
  private
57
80
 
58
81
  attr_accessor :url
@@ -167,21 +190,4 @@ class URLParser
167
190
  def remove_whitespace
168
191
  url.gsub!(/\s/, '')
169
192
  end
170
-
171
- # This computation is memoized because it is expensive. This prevents use cases which require using
172
- # .try_all in a tight loop. However, if this class is required directly (without requiring any subparsers),
173
- # this method will memoize an empty array. It is recommended to simply require librariesio-url-parser.rb directly.
174
- # This is the default behavior when installing this gem.
175
- private_class_method def self.descendants
176
- @descendants ||=
177
- begin
178
- descendants = []
179
- ObjectSpace.each_object(singleton_class) do |k|
180
- next if k.singleton_class?
181
-
182
- descendants.unshift k unless k == self
183
- end
184
- descendants
185
- end
186
- end
187
193
  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.5
4
+ version: 1.0.6
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-08-22 00:00:00.000000000 Z
11
+ date: 2022-08-26 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: []
@@ -98,7 +98,7 @@ licenses:
98
98
  - AGPL-3.0
99
99
  metadata:
100
100
  rubygems_mfa_required: 'true'
101
- post_install_message:
101
+ post_install_message:
102
102
  rdoc_options: []
103
103
  require_paths:
104
104
  - lib
@@ -113,8 +113,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0'
115
115
  requirements: []
116
- rubygems_version: 3.0.9
117
- signing_key:
116
+ rubygems_version: 3.0.3
117
+ signing_key:
118
118
  specification_version: 4
119
119
  summary: Parse the URL for various repositories tracked by libraries.io
120
120
  test_files: []