html-proofer 3.18.6 → 3.18.7
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 +4 -4
- data/lib/html-proofer/cache.rb +29 -14
- data/lib/html-proofer/runner.rb +1 -1
- data/lib/html-proofer/url_validator.rb +1 -1
- data/lib/html-proofer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 406cf6b61f0416a7f9f6874cd43e855288bc047ff7e2ec8ba374acdc57c1898b
|
4
|
+
data.tar.gz: fc44f71f75c1b830182d2ef60aed3abcc816ee7671cb7c4d74c174e75edf30be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47501eb3aa242423f2e748ed52d3fa5ed8c9ae35c839602d27de0b1712a0c1e22d8cfe20781569d469439ecc75bc3f853100f6aae63ee1c3f6174641cc102f7e
|
7
|
+
data.tar.gz: 30348fc2649b3210038813bf05e24f10d0ca775e1253a2ba04c79c282b1822bc3ed89e45c0652e44889b9bf82a6022fdc25db70407425c144b15875fe0c53ad0
|
data/lib/html-proofer/cache.rb
CHANGED
@@ -11,6 +11,8 @@ module HTMLProofer
|
|
11
11
|
DEFAULT_STORAGE_DIR = File.join('tmp', '.htmlproofer')
|
12
12
|
DEFAULT_CACHE_FILE_NAME = 'cache.log'
|
13
13
|
|
14
|
+
URI_REGEXP = URI::DEFAULT_PARSER.make_regexp
|
15
|
+
|
14
16
|
attr_reader :exists, :cache_log, :storage_dir, :cache_file
|
15
17
|
|
16
18
|
def initialize(logger, options)
|
@@ -30,6 +32,8 @@ module HTMLProofer
|
|
30
32
|
end
|
31
33
|
|
32
34
|
def within_timeframe?(time)
|
35
|
+
return false if time.nil?
|
36
|
+
|
33
37
|
(@parsed_timeframe..@cache_time).cover?(Time.parse(time))
|
34
38
|
end
|
35
39
|
|
@@ -71,10 +75,14 @@ module HTMLProofer
|
|
71
75
|
@cache_log[clean_url(url)] = data
|
72
76
|
end
|
73
77
|
|
74
|
-
def detect_url_changes(found)
|
75
|
-
existing_urls = @cache_log.keys.map { |url| clean_url(url) }
|
78
|
+
def detect_url_changes(found, type)
|
76
79
|
found_urls = found.keys.map { |url| clean_url(url) }
|
77
80
|
|
81
|
+
# if there were no urls, bail
|
82
|
+
return {} if found_urls.empty?
|
83
|
+
|
84
|
+
existing_urls = @cache_log.keys.map { |url| clean_url(url) }
|
85
|
+
|
78
86
|
# prepare to add new URLs detected
|
79
87
|
additions = found.reject do |url, _|
|
80
88
|
url = clean_url(url)
|
@@ -91,19 +99,20 @@ module HTMLProofer
|
|
91
99
|
@logger.log :info, "Adding #{new_link_text} to the cache..."
|
92
100
|
|
93
101
|
# remove from cache URLs that no longer exist
|
94
|
-
|
102
|
+
deletions = 0
|
95
103
|
@cache_log.delete_if do |url, _|
|
96
104
|
url = clean_url(url)
|
105
|
+
|
97
106
|
if found_urls.include?(url)
|
98
107
|
false
|
99
|
-
|
108
|
+
elsif url_matches_type?(url, type)
|
100
109
|
@logger.log :debug, "Removing #{url} from cache check"
|
101
|
-
|
110
|
+
deletions += 1
|
102
111
|
true
|
103
112
|
end
|
104
113
|
end
|
105
114
|
|
106
|
-
del_link_text = pluralize(
|
115
|
+
del_link_text = pluralize(deletions, 'link', 'links')
|
107
116
|
@logger.log :info, "Removing #{del_link_text} from the cache..."
|
108
117
|
|
109
118
|
additions
|
@@ -113,21 +122,22 @@ module HTMLProofer
|
|
113
122
|
# caches need access to this file. Write a proper versioned
|
114
123
|
# schema in the future
|
115
124
|
def write
|
116
|
-
|
117
|
-
file = JSON.parse(File.read(cache_file)) if File.exist?(cache_file)
|
118
|
-
File.write(cache_file, file.merge(@cache_log).to_json)
|
125
|
+
File.write(cache_file, @cache_log.to_json)
|
119
126
|
end
|
120
127
|
|
121
128
|
def load?
|
122
129
|
@load.nil?
|
123
130
|
end
|
124
131
|
|
125
|
-
def retrieve_urls(urls)
|
126
|
-
urls_to_check = detect_url_changes(urls)
|
132
|
+
def retrieve_urls(urls, type)
|
133
|
+
urls_to_check = detect_url_changes(urls, type)
|
134
|
+
|
127
135
|
@cache_log.each_pair do |url, cache|
|
128
136
|
next if within_timeframe?(cache['time']) && cache['message'].empty? # these were successes to skip
|
129
137
|
|
130
|
-
|
138
|
+
if url_matches_type?(url, type)
|
139
|
+
urls_to_check[url] = cache['filenames'] # recheck expired links
|
140
|
+
end
|
131
141
|
end
|
132
142
|
urls_to_check
|
133
143
|
end
|
@@ -154,9 +164,9 @@ module HTMLProofer
|
|
154
164
|
|
155
165
|
@cache_file = File.join(storage_dir, cache_file_name)
|
156
166
|
|
157
|
-
return unless File.exist?(cache_file)
|
167
|
+
return unless File.exist?(@cache_file)
|
158
168
|
|
159
|
-
contents = File.read(cache_file)
|
169
|
+
contents = File.read(@cache_file)
|
160
170
|
@cache_log = contents.empty? ? {} : JSON.parse(contents)
|
161
171
|
end
|
162
172
|
|
@@ -174,5 +184,10 @@ module HTMLProofer
|
|
174
184
|
@cache_datetime - Rational(measurement / 24.0)
|
175
185
|
end.to_time
|
176
186
|
end
|
187
|
+
|
188
|
+
def url_matches_type?(url, type)
|
189
|
+
return true if type == :internal && url !~ URI_REGEXP
|
190
|
+
return true if type == :external && url =~ URI_REGEXP
|
191
|
+
end
|
177
192
|
end
|
178
193
|
end
|
data/lib/html-proofer/runner.rb
CHANGED
@@ -238,7 +238,7 @@ module HTMLProofer
|
|
238
238
|
end
|
239
239
|
|
240
240
|
def load_internal_cache
|
241
|
-
urls_to_check = @cache.retrieve_urls(@internal_urls)
|
241
|
+
urls_to_check = @cache.retrieve_urls(@internal_urls, :internal)
|
242
242
|
cache_text = pluralize(urls_to_check.count, 'internal link', 'internal links')
|
243
243
|
@logger.log :info, "Found #{cache_text} in the cache..."
|
244
244
|
|
@@ -26,7 +26,7 @@ module HTMLProofer
|
|
26
26
|
@external_urls = remove_query_values
|
27
27
|
|
28
28
|
if @cache.use_cache?
|
29
|
-
urls_to_check = @cache.retrieve_urls(@external_urls)
|
29
|
+
urls_to_check = @cache.retrieve_urls(@external_urls, :external)
|
30
30
|
external_link_checker(urls_to_check)
|
31
31
|
@cache.write
|
32
32
|
else
|
data/lib/html-proofer/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: html-proofer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.18.
|
4
|
+
version: 3.18.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Garen Torikian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|