gitlab-org--gitlab-foss/lib/redcarpet/render/gitlab_html.rb

53 lines
1.3 KiB
Ruby
Raw Normal View History

class Redcarpet::Render::GitlabHTML < Redcarpet::Render::HTML
attr_reader :template
alias_method :h, :template
def initialize(template, options = {})
@template = template
@project = @template.instance_variable_get("@project")
2013-10-08 11:02:30 +00:00
@ref = @template.instance_variable_get("@ref")
2013-10-10 12:29:16 +00:00
@request_path = @template.instance_variable_get("@path")
super options
end
def block_code(code, language)
2012-11-09 23:55:56 +00:00
options = { options: {encoding: 'utf-8'} }
lexer = Pygments::Lexer.find(language) # language can be an alias
options.merge!(lexer: lexer.aliases[0].downcase) if lexer # downcase is required
2012-11-09 23:55:56 +00:00
2012-12-22 12:18:40 +00:00
# New lines are placed to fix an rendering issue
# with code wrapped inside <h1> tag for next case:
#
# # Title kinda h1
#
# ruby code here
#
<<-HTML
2012-12-22 12:18:40 +00:00
<div class="#{h.user_color_scheme_class}">#{Pygments.highlight(code, options)}</div>
HTML
end
def link(link, title, content)
h.link_to_gfm(content, link, title: title)
end
def preprocess(full_document)
if @project
h.create_relative_links(full_document, @project.path_with_namespace, @ref, @request_path, is_wiki?)
else
full_document
end
end
def postprocess(full_document)
h.gfm(full_document)
end
2013-10-08 12:21:01 +00:00
def is_wiki?
@template.instance_variable_get("@wiki")
end
end