require 'addressable/uri'
require 'redcarpet'
module LadyJosephine
module Redcarpet
class CustomMarkdownFormatter < ::Redcarpet::Render::SmartyHTML
def block_code(code, language)
"
" << code << "
"
end
def paragraph(text)
text
end
def block_quote(text)
text
end
def list(contents, list_type)
contents
end
def codespan(code)
code
end
def postprocess(full_document)
full_document.gsub(/<br>/, "
\n")
end
def preprocess(full_document)
sanitized_document = full_document.gsub(/\"(.*?)\"/) do
"„#{$1}“"
end
sanitized_document.gsub!(/\./, "\\.")
sanitized_document.gsub!(/\n/, "
\n")
sanitized_document
end
def link(link, title, context)
if is_internal_link?(link)
"#{context}"
else
"#{context}"
end
end
private
def is_internal_link?(link)
host = Addressable::URI.parse(link).host
host.nil? || host.casecmp(host_from_config) == 0
end
def host_from_config
config_host = Rails.configuration.action_mailer.default_url_options[:host]
unless config_host =~ /^http(s)?:\/\//i
config_host = "http://" + config_host
end
URI(config_host).host
end
end
end
end