html-proofer 3.9.2 → 3.9.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: bb78c07ea46c99e7e763ee0a6e283ce82c5623eb
4
- data.tar.gz: b978e20e49c1da740faf32af61ee45364f343e90
2
+ SHA256:
3
+ metadata.gz: 246e851f166c3330542ef13670c9b86ea6acef06b142de26692ae16ec421dd15
4
+ data.tar.gz: 6e63ce9f51b36817a9420ef07dd7a40c5668227f94ffc01df4cf3d8ac21fdb1e
5
5
  SHA512:
6
- metadata.gz: 57c2748da2642f8dcb604d86f112cdb5119b1553ec491bcf5f996853f5d27a6ddcdd12bf6744c092225d8e7910548f3531e70b5464529dc6efd4146ec9d56d90
7
- data.tar.gz: a7929074fa4fe9172df82a51c7430b12da95461a75c6c323883bc1166b768e81fec6c6f18a3db5730a5f39c941c5d43e390e37630bacae33a7c4d6274703bec0
6
+ metadata.gz: 19a3a97c74d2c9fddbbb4b12cbc38e9ab08309232c876ccaab922643de9535f0ebf9d56a90a3ce0c4821cd070d5b629ef4368629e2e5b2c6a02c36acb5019e3a
7
+ data.tar.gz: e2201edf4fee55ed6b80b00e7bbdb5eb272a8fc5748d1bcd41148e3afa7757e24487c5698e12083288aeefc2a5e7db317d8fd29b5340d5678d9c14fe2b327381
@@ -15,7 +15,7 @@ Mercenary.program(:htmlproofer) do |p|
15
15
 
16
16
  p.option 'allow_missing_href', '--allow-missing-href', 'If `true`, does not flag `a` tags missing `href` (this is the default for HTML5).'
17
17
  p.option 'allow_hash_href', '--allow-hash-href', 'If `true`, ignores the `href="#"`'
18
- p.option 'as_links', '--as-links', 'Assumes that `PATH` is a comma-separated array of links to check.'
18
+ p.option 'as_links', '--as-links link1,[link2,...]', Array, 'Assumes that `PATH` is a comma-separated array of links to check.'
19
19
  p.option 'alt_ignore', '--alt-ignore image1,[image2,...]', Array, 'A comma-separated list of Strings or RegExps containing `img`s whose missing `alt` tags are safe to ignore'
20
20
  p.option 'assume_extension', '--assume-extension', 'Automatically add extension (e.g. `.html`) to file paths, to allow extensionless URLs (as supported by Jekyll 3 and GitHub Pages) (default: `false`).'
21
21
  p.option 'checks_to_ignore', '--checks-to-ignore check1,[check2,...]', Array, ' An array of Strings indicating which checks you\'d like to not perform.'
@@ -25,12 +25,12 @@ Mercenary.program(:htmlproofer) do |p|
25
25
  p.option 'check_img_http', '--check-img-http', 'Fails an image if it\'s marked as `http` (default: `false`).'
26
26
  p.option 'check_opengraph', '--check-opengraph', 'Enables the Open Graph checker (default: `false`).'
27
27
  p.option 'check_sri', '--check-sri', 'Check that `<link>` and `<script>` external resources do use SRI (default: `false`).'
28
- p.option 'directory_index_file', '--directory-index-file', String, 'Sets the file to look for when a link refers to a directory. (default: `index.html`)'
28
+ p.option 'directory_index_file', '--directory-index-file <filename>', String, 'Sets the file to look for when a link refers to a directory. (default: `index.html`)'
29
29
  p.option 'disable_external', '--disable-external', 'If `true`, does not run the external link checker, which can take a lot of time (default: `false`)'
30
30
  p.option 'empty_alt_ignore', '--empty-alt-ignore', 'If `true`, ignores images with empty alt tags'
31
- p.option 'error_sort', '--error-sort SORT', 'Defines the sort order for error output. Can be `:path`, `:desc`, or `:status` (default: `:path`).'
31
+ p.option 'error_sort', '--error-sort <sort>', String, 'Defines the sort order for error output. Can be `:path`, `:desc`, or `:status` (default: `:path`).'
32
32
  p.option 'enforce_https', '--enforce-https', 'Fails a link if it\'s not marked as `https` (default: `false`).'
33
- p.option 'extension', '--extension EXT', String, 'The extension of your HTML files including the dot. (default: `.html`)'
33
+ p.option 'extension', '--extension <ext>', String, 'The extension of your HTML files including the dot. (default: `.html`)'
34
34
  p.option 'external_only', '--external_only', 'Only checks problems with external references'
35
35
  p.option 'file_ignore', '--file-ignore file1,[file2,...]', Array, 'A comma-separated list of Strings or RegExps containing file paths that are safe to ignore'
36
36
  p.option 'http_status_ignore', '--http-status-ignore 123,[xxx, ...]', Array, 'A comma-separated list of numbers representing status codes to ignore.'
@@ -19,6 +19,7 @@ rescue LoadError; end
19
19
  module HTMLProofer
20
20
  def check_file(file, options = {})
21
21
  raise ArgumentError unless file.is_a?(String)
22
+ raise ArgumentError, "#{file} does not exist" unless File.exist?(file)
22
23
  options[:type] = :file
23
24
  HTMLProofer::Runner.new(file, options)
24
25
  end
@@ -26,6 +27,7 @@ module HTMLProofer
26
27
 
27
28
  def check_directory(directory, options = {})
28
29
  raise ArgumentError unless directory.is_a?(String)
30
+ raise ArgumentError, "#{directory} does not exist" unless Dir.exist?(directory)
29
31
  options[:type] = :directory
30
32
  HTMLProofer::Runner.new([directory], options)
31
33
  end
@@ -34,6 +36,9 @@ module HTMLProofer
34
36
  def check_directories(directories, options = {})
35
37
  raise ArgumentError unless directories.is_a?(Array)
36
38
  options[:type] = :directory
39
+ directories.each do |directory|
40
+ raise ArgumentError, "#{directory} does not exist" unless Dir.exist?(directory)
41
+ end
37
42
  HTMLProofer::Runner.new(directories, options)
38
43
  end
39
44
  module_function :check_directories
@@ -110,6 +110,7 @@ class LinkCheck < ::HTMLProofer::Check
110
110
  def hash_check(html, href_hash)
111
111
  decoded_href_hash = Addressable::URI.unescape(href_hash)
112
112
  fragment_ids = [href_hash, decoded_href_hash]
113
+ # https://www.w3.org/TR/html5/single-page.html#scroll-to-fragid
113
114
  fragment_ids.include?('top') || !find_fragments(html, fragment_ids).empty?
114
115
  end
115
116
 
@@ -117,8 +118,8 @@ class LinkCheck < ::HTMLProofer::Check
117
118
  xpaths = fragment_ids.flat_map do |frag_id|
118
119
  escaped_frag_id = "'#{frag_id.split("'").join("', \"'\", '")}', ''"
119
120
  [
120
- "//*[case_insensitive_equals(@id, concat(#{escaped_frag_id}))]",
121
- "//*[case_insensitive_equals(@name, concat(#{escaped_frag_id}))]"
121
+ "//*[case_sensitive_equals(@id, concat(#{escaped_frag_id}))]",
122
+ "//*[case_sensitive_equals(@name, concat(#{escaped_frag_id}))]"
122
123
  ]
123
124
  end
124
125
  xpaths << XpathFunctions.new
@@ -140,8 +141,8 @@ class LinkCheck < ::HTMLProofer::Check
140
141
  end
141
142
 
142
143
  class XpathFunctions
143
- def case_insensitive_equals(node_set, str_to_match)
144
- node_set.find_all { |node| node.to_s.casecmp(str_to_match.to_s.downcase).zero? }
144
+ def case_sensitive_equals(node_set, str_to_match)
145
+ node_set.find_all { |node| node.to_s. == str_to_match.to_s }
145
146
  end
146
147
  end
147
148
  end
@@ -178,8 +178,9 @@ module HTMLProofer
178
178
 
179
179
  body_doc = create_nokogiri(response.body)
180
180
 
181
+ unencoded_hash = Addressable::URI.unescape(hash)
182
+ xpath = %(//*[@name="#{hash}"]|/*[@name="#{unencoded_hash}"]|//*[@id="#{hash}"]|//*[@id="#{unencoded_hash}"])
181
183
  # user-content is a special addition by GitHub.
182
- xpath = %(//*[@name="#{hash}"]|//*[@id="#{hash}"])
183
184
  if URI.parse(href).host =~ /github\.com/i
184
185
  xpath << %(|//*[@name="user-content-#{hash}"]|//*[@id="user-content-#{hash}"])
185
186
  end
@@ -1,3 +1,3 @@
1
1
  module HTMLProofer
2
- VERSION = '3.9.2'.freeze
2
+ VERSION = '3.9.3'.freeze
3
3
  end
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.9.2
4
+ version: 3.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen Torikian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-01 00:00:00.000000000 Z
11
+ date: 2018-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mercenary
@@ -314,7 +314,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
314
314
  version: '0'
315
315
  requirements: []
316
316
  rubyforge_project:
317
- rubygems_version: 2.6.12
317
+ rubygems_version: 2.7.6
318
318
  signing_key:
319
319
  specification_version: 4
320
320
  summary: A set of tests to validate your HTML output. These tests check if your image