blob: 104bdb6dd4109ededcd11eed710a1b6f257979ef (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# frozen_string_literal: true
module Markup
class RenderingService
def initialize(text, file_name: nil, context: {}, postprocess_context: {})
@text = text
@file_name = file_name
@context = context
@postprocess_context = postprocess_context
end
def execute
return '' unless text.present?
return context.delete(:rendered) if context.has_key?(:rendered)
html = markup_unsafe
return '' unless html.present?
postprocess_context ? postprocess(html) : html
end
private
def markup_unsafe
return markdown_unsafe unless file_name
if Gitlab::MarkupHelper.gitlab_markdown?(file_name)
markdown_unsafe
elsif Gitlab::MarkupHelper.asciidoc?(file_name)
asciidoc_unsafe
elsif Gitlab::MarkupHelper.plain?(file_name)
plain_unsafe
else
other_markup_unsafe
end
end
def markdown_unsafe
Banzai.render(text, context)
end
def asciidoc_unsafe
Gitlab::Asciidoc.render(text, context)
end
def plain_unsafe
ActionController::Base.helpers.content_tag :pre, class: 'plain-readme' do
text
end
end
def other_markup_unsafe
Gitlab::OtherMarkup.render(file_name, text, context)
rescue GitHub::Markup::CommandError
ActionController::Base.helpers.simple_format(text)
end
def postprocess(html)
Banzai.post_process(html, context.reverse_merge(postprocess_context))
end
attr_reader :text, :file_name, :context, :postprocess_context
end
end
|