Skip to content

Commit 3a2356b

Browse files
authored
Merge pull request #418 from gjtorikian/allow-for-text-pipeline
Allow for "just text" pipelines
2 parents 713f663 + 959defc commit 3a2356b

File tree

4 files changed

+28
-13
lines changed

4 files changed

+28
-13
lines changed

.rubocop.yml

+3
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@ AllCops:
1515
- "vendor/**/*"
1616
- "tmp/**/*"
1717
- "test/progit/**/*"
18+
19+
ThreadSafety/ClassAndModuleAttributes:
20+
Enabled: false

lib/html_pipeline.rb

+12-12
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def initialize(text_filters: [], convert_filter: nil, sanitization_config: Sanit
122122

123123
@convert_filter = convert_filter
124124

125-
if @convert_filter.nil? && (!@text_filters.empty? && !@node_filters.empty?)
125+
if @convert_filter.nil? && !@text_filters.empty? && !@node_filters.empty?
126126
raise InvalidFilterError, "Must provide `convert_filter` if `text_filters` and `node_filters` are also provided"
127127
elsif !@convert_filter.nil?
128128
validate_filter(@convert_filter, HTMLPipeline::ConvertFilter)
@@ -154,13 +154,13 @@ def call(text, context: {}, result: {})
154154
if @text_filters.any?
155155
payload = default_payload({
156156
text_filters: @text_filters.map { |f| f.class.name },
157-
context: context,
158-
result: result,
157+
context:,
158+
result:,
159159
})
160160
instrument("call_text_filters.html_pipeline", payload) do
161161
result[:output] =
162162
@text_filters.inject(text) do |doc, filter|
163-
perform_filter(filter, doc, context: (filter.context || {}).merge(context), result: result)
163+
perform_filter(filter, doc, context: (filter.context || {}).merge(context), result:)
164164
end
165165
end
166166
end
@@ -181,18 +181,18 @@ def call(text, context: {}, result: {})
181181
},
182182
}
183183

184-
if @node_filters.empty?
184+
if @node_filters.empty? && !@sanitization_config.nil?
185185
instrument("sanitization.html_pipeline", payload) do
186186
result[:output] = Selma::Rewriter.new(sanitizer: @sanitization_config, options: rewriter_options).rewrite(html)
187187
end
188-
else
188+
elsif @node_filters.any?
189189
instrument("call_node_filters.html_pipeline", payload) do
190190
@node_filters.each { |filter| filter.context = (filter.context || {}).merge(context) }
191191
result[:output] = Selma::Rewriter.new(sanitizer: @sanitization_config, handlers: @node_filters, options: rewriter_options).rewrite(html)
192192
payload = default_payload({
193193
node_filters: @node_filters.map { |f| f.class.name },
194-
context: context,
195-
result: result,
194+
context:,
195+
result:,
196196
})
197197
end
198198
end
@@ -211,18 +211,18 @@ def call(text, context: {}, result: {})
211211
def perform_filter(filter, doc, context: {}, result: {})
212212
payload = default_payload({
213213
filter: filter.class.name,
214-
context: context,
215-
result: result,
214+
context:,
215+
result:,
216216
})
217217

218218
instrument("call_filter.html_pipeline", payload) do
219-
filter.call(doc, context: context, result: result)
219+
filter.call(doc, context:, result:)
220220
end
221221
end
222222

223223
# Like call but guarantee the value returned is a string of HTML markup.
224224
def to_html(input, context: {}, result: {})
225-
result = call(input, context: context, result: result)
225+
result = call(input, context:, result:)
226226
output = result[:output]
227227
if output.respond_to?(:to_html)
228228
output.to_html

lib/html_pipeline/version.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
class HTMLPipeline
4-
VERSION = "3.2.2"
4+
VERSION = "3.2.3"
55
end

test/html_pipeline_test.rb

+12
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,18 @@ def test_incorrect_node_filters
104104
end
105105
end
106106

107+
def test_just_text_filters
108+
text = "Hey there, @billy."
109+
110+
pipeline = HTMLPipeline.new(
111+
text_filters: [TestReverseFilter.new],
112+
convert_filter: nil,
113+
)
114+
result = pipeline.call(text)[:output]
115+
116+
assert_equal(".yllib@ ,ereht yeH", result)
117+
end
118+
107119
def test_kitchen_sink
108120
text = "Hey there, @billy. Love to see <marquee>yah</marquee>!"
109121

0 commit comments

Comments
 (0)