Skip to content

Commit e7bc803

Browse files
authored
Merge pull request #375 from gjtorikian/convert-no-need
req convert_filter if `text/node`filter present
2 parents 492ab84 + 04cec11 commit e7bc803

File tree

5 files changed

+27
-14
lines changed

5 files changed

+27
-14
lines changed

lib/html_pipeline.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,9 @@ def initialize(text_filters: [], convert_filter: nil, sanitization_config: Sanit
116116
validate_filters(@node_filters, HTMLPipeline::NodeFilter)
117117

118118
@convert_filter = convert_filter
119-
if @convert_filter.nil? && !@node_filters.empty?
120-
raise InvalidFilterError, "Must provide `convert_filter` if `node_filter`s is also provided"
119+
120+
if @convert_filter.nil? && (!@text_filters.empty? && !@node_filters.empty?)
121+
raise InvalidFilterError, "Must provide `convert_filter` if `text_filters` and `node_filters` are also provided"
121122
elsif !@convert_filter.nil?
122123
validate_filter(@convert_filter, HTMLPipeline::ConvertFilter)
123124
end

lib/html_pipeline/filter.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def has_ancestor?(element, ancestor)
8080
def needs(*keys)
8181
missing = keys.reject { |key| context.include?(key) }
8282

83-
return unless missing.any?
83+
return if missing.none?
8484

8585
raise ArgumentError,
8686
"Missing context keys for #{self.class.name}: #{missing.map(&:inspect).join(", ")}"

lib/html_pipeline/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
class HTMLPipeline
4-
VERSION = "3.0.0.pre2"
4+
VERSION = "3.0.0.pre3"
55
end

test/html_pipeline_test.rb

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,9 @@
44
require "helpers/mocked_instrumentation_service"
55

66
class HTMLPipelineTest < Minitest::Test
7-
class TestFilter < HTMLPipeline::TextFilter
8-
class << self
9-
def call(input, context: {}, result: {})
10-
input.reverse
11-
end
12-
end
13-
end
14-
157
def setup
168
@default_context = {}
17-
@pipeline = HTMLPipeline.new(text_filters: [TestFilter], default_context: @default_context)
9+
@pipeline = HTMLPipeline.new(text_filters: [TestTextFilter], default_context: @default_context)
1810
end
1911

2012
def test_filter_instrumentation
@@ -27,7 +19,7 @@ def test_filter_instrumentation
2719

2820
assert(event, "event expected")
2921
assert_equal("call_filter.html_pipeline", event)
30-
assert_equal(TestFilter.name, payload[:filter])
22+
assert_equal(TestTextFilter.name, payload[:filter])
3123
assert_equal(@pipeline.class.name, payload[:pipeline])
3224
assert_equal(body.reverse, payload[:result][:output])
3325
end
@@ -90,6 +82,18 @@ def test_incorrect_convert_filter
9082
end
9183
end
9284

85+
def test_convert_filter_needed_for_text_and_html_filters
86+
assert_raises(HTMLPipeline::InvalidFilterError) do
87+
HTMLPipeline.new(
88+
text_filters: [TestTextFilter],
89+
node_filters: [
90+
HTMLPipeline::NodeFilter::MentionFilter.new,
91+
],
92+
default_context: @default_context,
93+
)
94+
end
95+
end
96+
9397
def test_incorrect_node_filters
9498
assert_raises(HTMLPipeline::InvalidFilterError) do
9599
HTMLPipeline.new(node_filters: [HTMLPipeline::ConvertFilter::MarkdownFilter], default_context: @default_context)

test/test_helper.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,11 @@ module TestHelpers
1515
end
1616

1717
Minitest::Test.include(TestHelpers)
18+
19+
class TestTextFilter < HTMLPipeline::TextFilter
20+
class << self
21+
def call(input, context: {}, result: {})
22+
input.reverse
23+
end
24+
end
25+
end

0 commit comments

Comments
 (0)