Skip to content

Commit e00d564

Browse files
committed
make email address filtering optional
1 parent 8a8e7b3 commit e00d564

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

lib/html/pipeline/email_reply_filter.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,12 @@ def call
4747
paragraphs = EmailReplyParser.read(text.dup).fragments.map do |fragment|
4848
pieces = [escape_html(fragment.to_s.strip).gsub(/^\s*(>|>)/, '')]
4949
if fragment.quoted?
50-
pieces.map! do |piece|
51-
lines = piece.lines
52-
lines.first.gsub!(EMAIL_REGEX, HIDDEN_EMAIL_PATTERN)
53-
lines
50+
if context[:hide_quoted_email_addresses]
51+
pieces.map! do |piece|
52+
lines = piece.lines
53+
lines.first.gsub!(EMAIL_REGEX, HIDDEN_EMAIL_PATTERN)
54+
lines
55+
end
5456
end
5557
pieces.unshift EMAIL_QUOTED_HEADER
5658
pieces << EMAIL_HEADER_END

test/html/pipeline/email_reply_filter_test.rb

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
EmailReplyFilter = HTML::Pipeline::EmailReplyFilter
44

55
class HTML::Pipeline::EmailReplyFilterTest < Minitest::Test
6-
def test_hides_email_addresses
7-
filter = EmailReplyFilter.new(<<-EMAIL, :highlight => "coffeescript")
6+
def setup
7+
@body = <<-EMAIL
88
Hey, don't send email addresses in comments. They aren't filtered.
99
1010
> On Mar 5, 2016, at 08:05, Hacker J. Hackerson <example@example.com> wrote:
@@ -15,9 +15,19 @@ def test_hides_email_addresses
1515
> Reply to this email directly or view it on GitHub.
1616
>
1717
EMAIL
18+
end
19+
20+
def test_doesnt_hide_by_default
21+
filter = EmailReplyFilter.new(@body)
22+
doc = filter.call.to_s
23+
assert_match %r(example@example.com), doc
24+
assert_match %r(alreadyleaked@example.com), doc
25+
end
1826

19-
doc = filter.call
20-
refute_match %r(example@example.com), doc.to_s
21-
assert_match %r(alreadyleaked@example.com), doc.to_s
27+
def test_hides_email_addresses_when_configured
28+
filter = EmailReplyFilter.new(@body, :hide_quoted_email_addresses => true)
29+
doc = filter.call.to_s
30+
refute_match %r(example@example.com), doc
31+
assert_match %r(alreadyleaked@example.com), doc
2232
end
2333
end

0 commit comments

Comments
 (0)