html-proofer 2.5.0 → 2.5.1

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
  SHA1:
3
- metadata.gz: 1b2c47bd5d3ea56e4d6f2a5f4ee3ba01ed43b337
4
- data.tar.gz: 381527e029581dcb0249372f345d838a2950f136
3
+ metadata.gz: e3e81446e89bd9cd6e2bb65fdc374f02304c1d9f
4
+ data.tar.gz: f0fdfa24b5c7a5e8e5b2934adbc060f6ecbb9582
5
5
  SHA512:
6
- metadata.gz: 0a72bfe1b0702177843865d6b36008a1136a1e8366c37ffce4ea37a91d8dc876e394167328a77068ae1f2b70d2fa48f7fa0bcd82d0d8b7518d219949ae8cd056
7
- data.tar.gz: 25a3d37a3dcf3ff4f8ea439ac1344bdac5f55b4d5621017f7b8b22d4e963fb5f7c8e49d774a223a251117e7407afad464aae471839bdb04f4174edaa3f170370
6
+ metadata.gz: 36b29e1f9bcc2a498fed44d1a0ddb3bfd725b2061b4a9d5493827238967ef74201209f5b1c103bf672ec6edab7de866d0dc94f40fe8c5a05891f2086f9fc9051
7
+ data.tar.gz: 0781163094e5a85ddde161a2e1e5b07b9fbe3903f004ec8766cb838f52048668b86a6212413b3c6974a2365f72359036f4c5bcc741a9634e5e2e2f5396af048c
@@ -22,7 +22,7 @@ module HTML
22
22
  class Proofer
23
23
  include HTML::Proofer::Utils
24
24
 
25
- attr_reader :options, :typhoeus_opts, :hydra_opts, :parallel_opts, :validation_opts, :external_urls
25
+ attr_reader :options, :typhoeus_opts, :hydra_opts, :parallel_opts, :validation_opts, :external_urls, :iterable_external_urls
26
26
 
27
27
  TYPHOEUS_DEFAULTS = {
28
28
  :followlocation => true,
@@ -147,6 +147,7 @@ module HTML
147
147
  def validate_urls
148
148
  url_validator = HTML::Proofer::UrlValidator.new(logger, @external_urls, @options, @typhoeus_opts, @hydra_opts)
149
149
  @failed_tests.concat(url_validator.run)
150
+ @iterable_external_urls = url_validator.iterable_external_urls
150
151
  end
151
152
 
152
153
  def files
@@ -24,7 +24,6 @@ module HTML
24
24
  @alt_ignores = @options[:alt_ignore]
25
25
  @empty_alt_ignore = @options[:empty_alt_ignore]
26
26
  @external_urls = {}
27
- @external_domain_paths_with_queries = {}
28
27
  end
29
28
 
30
29
  def run
@@ -37,13 +36,7 @@ module HTML
37
36
 
38
37
  def add_to_external_urls(url, line)
39
38
  return if @external_urls[url]
40
- uri = Addressable::URI.parse(url)
41
-
42
- if uri.query.nil?
43
- add_path_for_url(url)
44
- else
45
- new_url_query_values?(uri, url)
46
- end
39
+ add_path_for_url(url)
47
40
  end
48
41
 
49
42
  def add_path_for_url(url)
@@ -54,26 +47,6 @@ module HTML
54
47
  end
55
48
  end
56
49
 
57
- def new_url_query_values?(uri, url)
58
- queries = uri.query_values.keys.join('-')
59
- domain_path = extract_domain_path(uri)
60
- if @external_domain_paths_with_queries[domain_path].nil?
61
- add_path_for_url(url)
62
- # remember queries we've seen, ignore future ones
63
- @external_domain_paths_with_queries[domain_path] = [queries]
64
- else
65
- # add queries we haven't seen
66
- unless @external_domain_paths_with_queries[domain_path].include?(queries)
67
- add_path_for_url(url)
68
- @external_domain_paths_with_queries[domain_path] << queries
69
- end
70
- end
71
- end
72
-
73
- def extract_domain_path(uri)
74
- uri.host + uri.path
75
- end
76
-
77
50
  def self.checks
78
51
  classes = []
79
52
 
@@ -7,22 +7,55 @@ module HTML
7
7
  class UrlValidator
8
8
  include HTML::Proofer::Utils
9
9
 
10
- attr_accessor :logger, :external_urls, :hydra
10
+ attr_accessor :logger, :external_urls, :iterable_external_urls, :hydra
11
11
 
12
12
  def initialize(logger, external_urls, options, typhoeus_opts, hydra_opts)
13
13
  @logger = logger
14
14
  @external_urls = external_urls
15
+ @iterable_external_urls = {}
15
16
  @failed_tests = []
16
17
  @options = options
17
18
  @hydra = Typhoeus::Hydra.new(hydra_opts)
18
19
  @typhoeus_opts = typhoeus_opts
20
+ @external_domain_paths_with_queries = {}
19
21
  end
20
22
 
21
23
  def run
22
- external_link_checker(external_urls)
24
+ @iterable_external_urls = remove_query_values
25
+ external_link_checker(@iterable_external_urls)
23
26
  @failed_tests
24
27
  end
25
28
 
29
+ def remove_query_values
30
+ return if @external_urls.nil?
31
+ iterable_external_urls = @external_urls.dup
32
+ @external_urls.keys.each do |url|
33
+ uri = Addressable::URI.parse(url)
34
+ next if uri.query.nil?
35
+ iterable_external_urls.delete(url) unless new_url_query_values?(uri)
36
+ end
37
+ iterable_external_urls
38
+ end
39
+
40
+ # remember queries we've seen, ignore future ones
41
+ def new_url_query_values?(uri)
42
+ queries = uri.query_values.keys.join('-')
43
+ domain_path = extract_domain_path(uri)
44
+ if @external_domain_paths_with_queries[domain_path].nil?
45
+ @external_domain_paths_with_queries[domain_path] = [queries]
46
+ true
47
+ elsif !@external_domain_paths_with_queries[domain_path].include?(queries)
48
+ @external_domain_paths_with_queries[domain_path] << queries
49
+ true
50
+ else
51
+ false
52
+ end
53
+ end
54
+
55
+ def extract_domain_path(uri)
56
+ uri.host + uri.path
57
+ end
58
+
26
59
  # Proofer runs faster if we pull out all the external URLs and run the checks
27
60
  # at the end. Otherwise, we're halting the consuming process for every file during
28
61
  # the check_directory_of_files process.
@@ -1,5 +1,5 @@
1
1
  module HTML
2
2
  class Proofer
3
- VERSION = '2.5.0'
3
+ VERSION = '2.5.1'
4
4
  end
5
5
  end
@@ -371,6 +371,6 @@ describe 'Links test' do
371
371
  it 'does not check links with parameters multiple times' do
372
372
  fixture = "#{FIXTURES_DIR}/links/check_just_once.html"
373
373
  proofer = run_proofer(fixture)
374
- expect(proofer.external_urls.length).to eq 2
374
+ expect(proofer.iterable_external_urls.length).to eq 2
375
375
  end
376
376
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html-proofer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen Torikian