Switch to using kramdown for markdown formatting

Fixes #2103
This commit is contained in:
Tom Hughes 2019-01-09 17:52:24 +00:00
parent 99b380765a
commit 1f3372f52c
4 changed files with 12 additions and 22 deletions

View file

@ -77,7 +77,7 @@ gem "omniauth-openid"
gem "omniauth-windowslive"
# Markdown formatting support
gem "redcarpet"
gem "kramdown"
# For status transitions of Issues
gem "aasm"

View file

@ -161,6 +161,7 @@ GEM
jsonify (< 0.4.0)
jwt (2.1.0)
kgio (2.11.2)
kramdown (1.17.0)
libv8 (3.16.14.19)
libxml-ruby (3.1.0)
listen (3.1.5)
@ -303,7 +304,6 @@ GEM
ffi (~> 1.0)
record_tag_helper (1.0.0)
actionview (~> 5.x)
redcarpet (3.4.0)
ref (2.0.0)
request_store (1.4.1)
rack (>= 1.4)
@ -412,6 +412,7 @@ DEPENDENCIES
json
jsonify-rails
kgio
kramdown
libxml-ruby (>= 2.0.5)
listen
logstasher
@ -438,7 +439,6 @@ DEPENDENCIES
rails-controller-testing
rails-i18n (~> 4.0.0)
record_tag_helper
redcarpet
rinku (>= 1.2.2)
rotp
rubocop

View file

@ -1626,7 +1626,7 @@ en:
edit: Edit
preview: Preview
markdown_help:
title_html: Parsed with <a href="https://daringfireball.net/projects/markdown/">Markdown</a>
title_html: Parsed with <a href="https://kramdown.gettalong.org/quickref.html">kramdown</a>
headings: Headings
heading: Heading
subheading: Subheading

View file

@ -55,11 +55,15 @@ module RichText
SimpleFormat.new.simple_format(text)
end
def linkify(text)
def sanitize(text)
Sanitize.clean(text, Sanitize::Config::OSM).html_safe
end
def linkify(text, mode = :urls)
if text.html_safe?
Rinku.auto_link(text, :urls, tag_builder.tag_options(:rel => "nofollow")).html_safe
Rinku.auto_link(text, mode, tag_builder.tag_options(:rel => "nofollow")).html_safe
else
Rinku.auto_link(text, :urls, tag_builder.tag_options(:rel => "nofollow"))
Rinku.auto_link(text, mode, tag_builder.tag_options(:rel => "nofollow"))
end
end
end
@ -72,30 +76,16 @@ module RichText
def to_text
to_s
end
private
def sanitize(text)
Sanitize.clean(text, Sanitize::Config::OSM).html_safe
end
end
class Markdown < Base
def to_html
Markdown.html_parser.render(self).html_safe
linkify(sanitize(Kramdown::Document.new(self).to_html), :all)
end
def to_text
to_s
end
def self.html_renderer
@html_renderer ||= Redcarpet::Render::XHTML.new(:filter_html => true, :safe_links_only => true, :link_attributes => { :rel => "nofollow" })
end
def self.html_parser
@html_parser ||= Redcarpet::Markdown.new(html_renderer, :no_intra_emphasis => true, :autolink => true, :space_after_headers => true)
end
end
class Text < Base