debian-mirror-gitlab/lib/banzai/filter/markdown_filter.rb

35 lines
836 B
Ruby
Raw Normal View History

2018-11-18 11:00:15 +05:30
# frozen_string_literal: true
2015-12-23 02:04:40 +05:30
module Banzai
module Filter
class MarkdownFilter < HTML::Pipeline::TextFilter
def initialize(text, context = nil, result = nil)
2018-03-27 19:54:05 +05:30
super(text, context, result)
2019-03-02 22:35:43 +05:30
@renderer = renderer(context[:markdown_engine]).new(context)
2018-03-27 19:54:05 +05:30
@text = @text.delete("\r")
2015-12-23 02:04:40 +05:30
end
def call
2018-03-27 19:54:05 +05:30
@renderer.render(@text).rstrip
end
private
2018-11-08 19:23:39 +05:30
DEFAULT_ENGINE = :common_mark
2018-03-27 19:54:05 +05:30
def engine(engine_from_context)
engine_from_context ||= DEFAULT_ENGINE
engine_from_context.to_s.classify
2015-12-23 02:04:40 +05:30
end
2018-03-27 19:54:05 +05:30
def renderer(engine_from_context)
"Banzai::Filter::MarkdownEngines::#{engine(engine_from_context)}".constantize
rescue NameError
raise NameError, "`#{engine_from_context}` is unknown markdown engine"
2016-09-13 17:45:13 +05:30
end
2015-12-23 02:04:40 +05:30
end
end
end