html-proofer 3.15.3 → 3.16.0
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/check/opengraph.rb +1 -1
- data/lib/html-proofer/element.rb +11 -10
- data/lib/html-proofer/middleware.rb +1 -1
- data/lib/html-proofer/runner.rb +18 -0
- data/lib/html-proofer/url_validator.rb +5 -0
- 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: 39ffac5e6c23ab7b75d99dd69779be2109ed8b02dc4a5cb0a33740119cb66766
|
4
|
+
data.tar.gz: cdaf142dfde936fa1d88d410499c04fdbbb3b9814bc00ba6800ff3edb8acee50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 34a4253b2eb9674060583c0f9006f9c36204bfd8bbb3e347293874e8db3248153e1efcdb13cbb9a5fc7967aabe478773a6a33c3c2372b4e819ecc0c41af43f36
|
7
|
+
data.tar.gz: 34530aeb5fb2836568aa5f7ebea7f154ef8e58c82ac0803aeba5632f704e7aed6c8111a095546c56b1331fa3dc1b563b08eac7cff0205aee4056815ebd8a6478
|
data/lib/html-proofer/element.rb
CHANGED
@@ -15,7 +15,7 @@ module HTMLProofer
|
|
15
15
|
# Construct readable ivars for every element
|
16
16
|
begin
|
17
17
|
obj.attributes.each_pair do |attribute, value|
|
18
|
-
name = attribute.tr('
|
18
|
+
name = attribute.tr('-:.;@', '_').to_s.to_sym
|
19
19
|
(class << self; self; end).send(:attr_reader, name)
|
20
20
|
instance_variable_set("@#{name}", value.value)
|
21
21
|
end
|
@@ -42,19 +42,19 @@ module HTMLProofer
|
|
42
42
|
|
43
43
|
# fix up missing protocols
|
44
44
|
if defined?(@href)
|
45
|
-
@href.insert(0, 'http:') if
|
45
|
+
@href.insert(0, 'http:') if %r{^//}.match?(@href)
|
46
46
|
else
|
47
47
|
@href = nil
|
48
48
|
end
|
49
49
|
|
50
50
|
if defined?(@src)
|
51
|
-
@src.insert(0, 'http:') if
|
51
|
+
@src.insert(0, 'http:') if %r{^//}.match?(@src)
|
52
52
|
else
|
53
53
|
@src = nil
|
54
54
|
end
|
55
55
|
|
56
56
|
if defined?(@srcset)
|
57
|
-
@srcset.insert(0, 'http:') if
|
57
|
+
@srcset.insert(0, 'http:') if %r{^//}.match?(@srcset)
|
58
58
|
else
|
59
59
|
@srcset = nil
|
60
60
|
end
|
@@ -105,11 +105,11 @@ module HTMLProofer
|
|
105
105
|
return true if @data_proofer_ignore
|
106
106
|
return true if @parent_ignorable
|
107
107
|
|
108
|
-
return true if
|
108
|
+
return true if /^javascript:/.match?(url)
|
109
109
|
|
110
110
|
# ignore base64 encoded images
|
111
111
|
if %w[ImageCheck FaviconCheck].include? @type
|
112
|
-
return true if
|
112
|
+
return true if /^data:image/.match?(url)
|
113
113
|
end
|
114
114
|
|
115
115
|
# ignore user defined URLs
|
@@ -178,7 +178,7 @@ module HTMLProofer
|
|
178
178
|
|
179
179
|
path_dot_ext = path + @check.options[:extension] if @check.options[:assume_extension]
|
180
180
|
|
181
|
-
if
|
181
|
+
if %r{^/}.match?(path) # path relative to root
|
182
182
|
if File.directory?(@check.src)
|
183
183
|
base = @check.src
|
184
184
|
else
|
@@ -217,10 +217,11 @@ module HTMLProofer
|
|
217
217
|
|
218
218
|
def ignores_pattern_check(links)
|
219
219
|
links.each do |ignore|
|
220
|
-
|
220
|
+
case ignore
|
221
|
+
when String
|
221
222
|
return true if ignore == url
|
222
|
-
|
223
|
-
return true if ignore
|
223
|
+
when Regexp
|
224
|
+
return true if ignore&.match?(url)
|
224
225
|
end
|
225
226
|
end
|
226
227
|
|
@@ -53,7 +53,7 @@ module HTMLProofer
|
|
53
53
|
def call(env)
|
54
54
|
result = @app.call(env)
|
55
55
|
return result if env['REQUEST_METHOD'] != 'GET'
|
56
|
-
return result if env['QUERY_STRING']
|
56
|
+
return result if /proofer-ignore/.match?(env['QUERY_STRING'])
|
57
57
|
return result if result.first != 200
|
58
58
|
|
59
59
|
body = []
|
data/lib/html-proofer/runner.rb
CHANGED
@@ -31,6 +31,7 @@ module HTMLProofer
|
|
31
31
|
end
|
32
32
|
|
33
33
|
@failures = []
|
34
|
+
@before_request = []
|
34
35
|
end
|
35
36
|
|
36
37
|
def run
|
@@ -117,6 +118,7 @@ module HTMLProofer
|
|
117
118
|
|
118
119
|
def validate_urls
|
119
120
|
url_validator = HTMLProofer::UrlValidator.new(@logger, @external_urls, @options)
|
121
|
+
url_validator.before_request = @before_request
|
120
122
|
@failures.concat(url_validator.run)
|
121
123
|
@external_urls = url_validator.external_urls
|
122
124
|
end
|
@@ -173,5 +175,21 @@ module HTMLProofer
|
|
173
175
|
failure_text = pluralize(count, 'failure', 'failures')
|
174
176
|
raise @logger.colorize :fatal, "HTML-Proofer found #{failure_text}!"
|
175
177
|
end
|
178
|
+
|
179
|
+
# Set before_request callback.
|
180
|
+
#
|
181
|
+
# @example Set before_request.
|
182
|
+
# request.before_request { |request| p "yay" }
|
183
|
+
#
|
184
|
+
# @param [ Block ] block The block to execute.
|
185
|
+
#
|
186
|
+
# @yield [ Typhoeus::Request ]
|
187
|
+
#
|
188
|
+
# @return [ Array<Block> ] All before_request blocks.
|
189
|
+
def before_request(&block)
|
190
|
+
@before_request ||= []
|
191
|
+
@before_request << block if block_given?
|
192
|
+
@before_request
|
193
|
+
end
|
176
194
|
end
|
177
195
|
end
|
@@ -10,6 +10,7 @@ module HTMLProofer
|
|
10
10
|
include HTMLProofer::Utils
|
11
11
|
|
12
12
|
attr_reader :external_urls
|
13
|
+
attr_writer :before_request
|
13
14
|
|
14
15
|
def initialize(logger, external_urls, options)
|
15
16
|
@logger = logger
|
@@ -18,6 +19,7 @@ module HTMLProofer
|
|
18
19
|
@options = options
|
19
20
|
@hydra = Typhoeus::Hydra.new(@options[:hydra])
|
20
21
|
@cache = Cache.new(@logger, @options[:cache])
|
22
|
+
@before_request = []
|
21
23
|
end
|
22
24
|
|
23
25
|
def run
|
@@ -137,6 +139,9 @@ module HTMLProofer
|
|
137
139
|
def queue_request(method, href, filenames)
|
138
140
|
opts = @options[:typhoeus].merge(method: method)
|
139
141
|
request = Typhoeus::Request.new(href, opts)
|
142
|
+
@before_request.each do |callback|
|
143
|
+
callback.call(request)
|
144
|
+
end
|
140
145
|
request.on_complete { |response| response_handler(response, filenames) }
|
141
146
|
@hydra.queue request
|
142
147
|
end
|
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.
|
4
|
+
version: 3.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Garen Torikian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|