Retrospring/app/helpers/markdown_helper.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

58 lines
1.9 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2014-12-28 10:06:49 -08:00
module MarkdownHelper
2014-12-28 10:06:49 -08:00
def markdown(content)
renderer = FlavoredMarkdown.new(**MARKDOWN_RENDERER_OPTS)
md = Redcarpet::Markdown.new(renderer, **MARKDOWN_OPTS)
2023-02-15 15:00:04 -08:00
# As the string has been sanitized we can mark it as HTML safe
Sanitize.fragment(md.render(content), EVIL_TAGS).strip.html_safe # rubocop:disable Rails/OutputSafety
2014-12-28 10:06:49 -08:00
end
2015-01-12 04:00:00 -08:00
def strip_markdown(content)
renderer = Redcarpet::Render::StripDown.new
md = Redcarpet::Markdown.new(renderer, **MARKDOWN_OPTS)
CGI.unescape_html(Sanitize.fragment(CGI.escape_html(md.render(content)), EVIL_TAGS)).strip
2015-01-12 04:00:00 -08:00
end
def twitter_markdown(content)
renderer = TwitteredMarkdown.new
md = Redcarpet::Markdown.new(renderer, **MARKDOWN_OPTS)
CGI.unescape_html(Sanitize.fragment(CGI.escape_html(md.render(content)), EVIL_TAGS)).strip
end
2015-05-24 05:48:54 -07:00
def question_markdown(content)
renderer = QuestionMarkdown.new
md = Redcarpet::Markdown.new(renderer, **MARKDOWN_OPTS)
2023-02-15 15:00:04 -08:00
# As the string has been sanitized we can mark it as HTML safe
Sanitize.fragment(md.render(content), EVIL_TAGS).strip.html_safe # rubocop:disable Rails/OutputSafety
end
2015-05-24 05:48:54 -07:00
def raw_markdown(content)
2023-02-18 11:19:31 -08:00
renderer = Redcarpet::Render::HTML.new(**MARKDOWN_RENDERER_OPTS)
md = Redcarpet::Markdown.new(renderer, **MARKDOWN_OPTS)
raw md.render content # rubocop:disable Rails/OutputSafety
2015-05-24 05:48:54 -07:00
end
def get_markdown(path, relative_to = Rails.root)
File.read relative_to.join(path)
rescue Errno::ENOENT
"# Error reading #{relative_to.join(path)}"
2015-05-24 05:48:54 -07:00
end
def markdown_io(path, relative_to = Rails.root)
markdown get_markdown path, relative_to
end
def strip_markdown_io(path, relative_to = Rails.root)
strip_markdown get_markdown path, relative_to
end
def twitter_markdown_io(path, relative_to = Rails.root)
twitter_markdown get_markdown path, relative_to
end
def raw_markdown_io(path, relative_to = Rails.root)
raw_markdown get_markdown path, relative_to
end
end