Chainable DOM based content filtering with pipes and filters. Mostly filters...
MarkdownPipeline = HTML::Pipeline.new [
MarkdownFilter,
SanitizationFilter,
ImageMaxWidthFilter,
HttpsFilter,
MentionFilter,
EmojiFilter,
SyntaxHighlightFilter
], :gfm => true # enable github formatted markdown
result = MarkdownPipeline.call <<-CODE
This is *great*:
some_code(:first)
CODE
puts result[:output].to_s
class IHeartRubyFilter < HTML::Pipeline::Filter
def call
doc.search("a").each do |a|
a['title'] = 'I <3 Ruby!'
end
doc
end
end
result = IHeartRubyFilter.call(%(<a href="https://www.ruby-lang.org">Ruby</a>))
puts result[:output].to_s
A class inheriting from HTML::Pipeline::Filter and implements a call method.
def validate
needs :url_options unless url_options
end
def url_options
context[:url_options]
end
and some more...