43 lines
997 B
Ruby
43 lines
997 B
Ruby
module ActionText
|
|
class Markdown < Record
|
|
DEFAULT_RENDERER_OPTIONS = {
|
|
filter_html: false
|
|
}
|
|
|
|
DEFAULT_MARKDOWN_EXTENSIONS = {
|
|
autolink: true,
|
|
highlight: true,
|
|
no_intra_emphasis: true,
|
|
fenced_code_blocks: true,
|
|
lax_spacing: true,
|
|
strikethrough: true,
|
|
tables: true
|
|
}
|
|
|
|
mattr_accessor :renderer, default: Redcarpet::Markdown.new(
|
|
Redcarpet::Render::HTML.new(DEFAULT_RENDERER_OPTIONS), DEFAULT_MARKDOWN_EXTENSIONS)
|
|
|
|
belongs_to :record, polymorphic: true, touch: true
|
|
|
|
def to_html
|
|
(renderer.try(:call) || renderer).render(content).html_safe
|
|
end
|
|
end
|
|
end
|
|
|
|
module ActionText::Markdown::Uploads
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
has_many_attached :uploads, dependent: :destroy
|
|
end
|
|
end
|
|
|
|
ActiveSupport.on_load :active_storage_attachment do
|
|
class ActionText::Markdown
|
|
include ActionText::Markdown::Uploads
|
|
end
|
|
end
|
|
|
|
ActiveSupport.run_load_hooks :action_text_markdown, ActionText::Markdown
|