From 0e3d8815b444c4a8eaed411b1a8628dd97134aa9 Mon Sep 17 00:00:00 2001 From: "Garen J. Torikian" Date: Tue, 18 Apr 2023 12:17:23 -0500 Subject: [PATCH 1/3] Support multiple email addresses in `mailto` --- lib/html_proofer/check/links.rb | 3 ++- spec/html-proofer/fixtures/links/multiple_mailto_links.html | 5 +++++ spec/html-proofer/links_spec.rb | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 spec/html-proofer/fixtures/links/multiple_mailto_links.html diff --git a/lib/html_proofer/check/links.rb b/lib/html_proofer/check/links.rb index 3fc47ac0..ad0199bd 100644 --- a/lib/html_proofer/check/links.rb +++ b/lib/html_proofer/check/links.rb @@ -96,7 +96,8 @@ def handle_mailto "#{@link.url.raw_attribute} contains no email address", element: @link, ) unless ignore_empty_mailto? - elsif !/#{URI::MailTo::EMAIL_REGEXP}/o.match?(@link.url.path) + # eg., if any do not match a valid URL + elsif @link.url.path.split(",").any? { |email| !/#{URI::MailTo::EMAIL_REGEXP}/o.match?(email) } add_failure( "#{@link.url.raw_attribute} contains an invalid email address", element: @link, diff --git a/spec/html-proofer/fixtures/links/multiple_mailto_links.html b/spec/html-proofer/fixtures/links/multiple_mailto_links.html new file mode 100644 index 00000000..58e826f5 --- /dev/null +++ b/spec/html-proofer/fixtures/links/multiple_mailto_links.html @@ -0,0 +1,5 @@ + + + Mail me. + + diff --git a/spec/html-proofer/links_spec.rb b/spec/html-proofer/links_spec.rb index 2b5a784a..c641323a 100644 --- a/spec/html-proofer/links_spec.rb +++ b/spec/html-proofer/links_spec.rb @@ -246,6 +246,12 @@ expect(proofer.failed_checks).to(eq([])) end + it "accepts multiple mailto links" do + ignorable_links = File.join(FIXTURES_DIR, "links", "multiple_mailto_links.html") + proofer = run_proofer(ignorable_links, :file) + expect(proofer.failed_checks).to(eq([])) + end + it "ignores blank mailto links when configured to allow them" do blank_mail_to_link = File.join(FIXTURES_DIR, "links", "blank_mailto_link.html") proofer = run_proofer(blank_mail_to_link, :file, ignore_empty_mailto: true) From 1c517e0c22eb214077d65c0178a92b19364dc094 Mon Sep 17 00:00:00 2001 From: "Garen J. Torikian" Date: Tue, 18 Apr 2023 12:18:31 -0500 Subject: [PATCH 2/3] :gem: bump to 5.0.7 --- lib/html_proofer/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/html_proofer/version.rb b/lib/html_proofer/version.rb index e07675f5..3b61d363 100644 --- a/lib/html_proofer/version.rb +++ b/lib/html_proofer/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module HTMLProofer - VERSION = "5.0.6" + VERSION = "5.0.7" end From ad731806e9f63d3c222b7cfff6c7a6cc57f8782a Mon Sep 17 00:00:00 2001 From: "Garen J. Torikian" Date: Tue, 18 Apr 2023 12:19:43 -0500 Subject: [PATCH 3/3] lint --- Rakefile | 2 +- lib/html_proofer/log.rb | 4 ++-- lib/html_proofer/reporter.rb | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Rakefile b/Rakefile index 47ed6c01..336e1b29 100644 --- a/Rakefile +++ b/Rakefile @@ -23,7 +23,7 @@ task :proof_readme do require "html-proofer" require "redcarpet" - renderer = Redcarpet::Render::HTML.new(\ + renderer = Redcarpet::Render::HTML.new( with_toc_data: true, ) redcarpet = Redcarpet::Markdown.new(renderer) diff --git a/lib/html_proofer/log.rb b/lib/html_proofer/log.rb index b29d0b6f..f4e91d38 100644 --- a/lib/html_proofer/log.rb +++ b/lib/html_proofer/log.rb @@ -12,7 +12,7 @@ class Log def initialize(log_level) @logger = Yell.new( - format: false, \ + format: false, name: "HTMLProofer", \ level: "gte.#{log_level}", ) do |l| @@ -41,7 +41,7 @@ def colorize(level, message) :red end - if (STDOUT_LEVELS.include?(level) && $stdout.isatty) || \ + if (STDOUT_LEVELS.include?(level) && $stdout.isatty) || (STDERR_LEVELS.include?(level) && $stderr.isatty) Rainbow(message).send(color) else diff --git a/lib/html_proofer/reporter.rb b/lib/html_proofer/reporter.rb index a75a3e0c..3474fcb1 100644 --- a/lib/html_proofer/reporter.rb +++ b/lib/html_proofer/reporter.rb @@ -11,8 +11,8 @@ def initialize(logger: nil) end def failures=(failures) - @failures = failures.group_by(&:check_name) \ - .transform_values { |issues| issues.sort_by { |issue| [issue.path, issue.line] } } \ + @failures = failures.group_by(&:check_name) + .transform_values { |issues| issues.sort_by { |issue| [issue.path, issue.line] } } .sort end