summaryrefslogtreecommitdiff
path: root/lib/redcarpet/render/gitlab_html.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/redcarpet/render/gitlab_html.rb')
-rw-r--r--lib/redcarpet/render/gitlab_html.rb72
1 files changed, 0 insertions, 72 deletions
diff --git a/lib/redcarpet/render/gitlab_html.rb b/lib/redcarpet/render/gitlab_html.rb
deleted file mode 100644
index 10efff2ae9f..00000000000
--- a/lib/redcarpet/render/gitlab_html.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-class Redcarpet::Render::GitlabHTML < Redcarpet::Render::HTML
-
- attr_reader :template
- alias_method :h, :template
-
- def initialize(template, color_scheme, options = {})
- @template = template
- @color_scheme = color_scheme
- @project = @template.instance_variable_get("@project")
- @options = options.dup
- super options
- end
-
- def preprocess(full_document)
- # Redcarpet doesn't allow SMB links when `safe_links_only` is enabled.
- # FTP links are allowed, so we trick Redcarpet.
- full_document.gsub("smb://", "ftp://smb:")
- end
-
- # If project has issue number 39, apostrophe will be linked in
- # regular text to the issue as Redcarpet will convert apostrophe to
- # #39;
- # We replace apostrophe with right single quote before Redcarpet
- # does the processing and put the apostrophe back in postprocessing.
- # This only influences regular text, code blocks are untouched.
- def normal_text(text)
- return text unless text.present?
- text.gsub("'", "&rsquo;")
- end
-
- # Stolen from Rugments::Plugins::Redcarpet as this module is not required
- # from Rugments's gem root.
- def block_code(code, language)
- lexer = Rugments::Lexer.find_fancy(language, code) || Rugments::Lexers::PlainText
-
- # XXX HACK: Redcarpet strips hard tabs out of code blocks,
- # so we assume you're not using leading spaces that aren't tabs,
- # and just replace them here.
- if lexer.tag == 'make'
- code.gsub! /^ /, "\t"
- end
-
- formatter = Rugments::Formatters::HTML.new(
- cssclass: "code highlight #{@color_scheme} #{lexer.tag}"
- )
- formatter.format(lexer.lex(code))
- end
-
- def link(link, title, content)
- h.link_to_gfm(content, link, title: title)
- end
-
- def header(text, level)
- if @options[:no_header_anchors]
- "<h#{level}>#{text}</h#{level}>"
- else
- id = ActionController::Base.helpers.strip_tags(h.gfm(text)).downcase() \
- .gsub(/[^a-z0-9_-]/, '-').gsub(/-+/, '-').gsub(/^-/, '').gsub(/-$/, '')
- "<h#{level} id=\"#{id}\">#{text}<a href=\"\##{id}\"></a></h#{level}>"
- end
- end
-
- def postprocess(full_document)
- full_document.gsub!("ftp://smb:", "smb://")
-
- full_document.gsub!("&rsquo;", "'")
- unless @template.instance_variable_get("@project_wiki") || @project.nil?
- full_document = h.create_relative_links(full_document)
- end
- h.gfm_with_options(full_document, @options)
- end
-end