Add markdown support
This commit is contained in:
parent
bc64450455
commit
44ef5a6173
3 changed files with 147 additions and 1 deletions
|
@ -23,3 +23,4 @@
|
|||
@import 'mastodon/dashboard';
|
||||
@import 'mastodon/rtl';
|
||||
@import 'mastodon/accessibility';
|
||||
@import 'mastodon/rich_text';
|
||||
|
|
97
app/javascript/styles/mastodon/rich_text.scss
Normal file
97
app/javascript/styles/mastodon/rich_text.scss
Normal file
|
@ -0,0 +1,97 @@
|
|||
.account__header__bio,
|
||||
.status__content__text,
|
||||
.e-content,
|
||||
.reply-indicator__content {
|
||||
pre,
|
||||
blockquote {
|
||||
margin-bottom: 20px;
|
||||
white-space: pre-wrap;
|
||||
unicode-bidi: plaintext;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
code, pre {
|
||||
border: 1px solid $ui-primary-color;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
code {
|
||||
margin: 0 4px;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 4px 8px;
|
||||
|
||||
span.ellipsis::after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
span.invisible {
|
||||
display: inline;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
width: inherit;
|
||||
height: inherit;
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
|
||||
blockquote {
|
||||
padding-left: 10px;
|
||||
border-left: 3px solid $darker-text-color;
|
||||
color: $darker-text-color;
|
||||
white-space: normal;
|
||||
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
& > ul,
|
||||
& > ol {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
em,
|
||||
i {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
margin-left: 2em;
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style-type: decimal;
|
||||
}
|
||||
|
||||
mark {
|
||||
background-color: $ui-highlight-color;
|
||||
color: $ui-secondary-color;
|
||||
padding: 0 2px;
|
||||
}
|
||||
}
|
||||
|
||||
.reply-indicator__content {
|
||||
blockquote {
|
||||
border-left-color: $inverted-text-color;
|
||||
color: $inverted-text-color;
|
||||
}
|
||||
}
|
|
@ -43,7 +43,9 @@ class TextFormatter
|
|||
end
|
||||
end
|
||||
|
||||
html = simple_format(html, {}, sanitize: false).delete("\n") if multiline?
|
||||
html = markdownify(html)
|
||||
|
||||
# html = simple_format(html, {}, sanitize: false).delete("\n") if multiline?
|
||||
|
||||
html.html_safe # rubocop:disable Rails/OutputSafety
|
||||
end
|
||||
|
@ -155,4 +157,50 @@ class TextFormatter
|
|||
def preloaded_accounts?
|
||||
preloaded_accounts.present?
|
||||
end
|
||||
|
||||
def markdownify(html)
|
||||
# not need filter_html because escape is already done
|
||||
@htmlobj ||= MyMarkdownHTML.new(
|
||||
filter_html: false,
|
||||
hard_wrap: false,
|
||||
no_styles: true
|
||||
)
|
||||
@markdown ||= Redcarpet::Markdown.new(@htmlobj,
|
||||
autolink: false,
|
||||
tables: false,
|
||||
underline: true,
|
||||
disable_indented_code_blocks: false,
|
||||
fenced_code_blocks: true,
|
||||
highlight: false
|
||||
)
|
||||
@markdown.render(html)
|
||||
end
|
||||
|
||||
class MyMarkdownHTML < Redcarpet::Render::HTML
|
||||
def link(link, title, content)
|
||||
nil
|
||||
end
|
||||
|
||||
def linebreak
|
||||
nil
|
||||
end
|
||||
|
||||
def block_code(code, language)
|
||||
"<pre>#{code}</pre>"
|
||||
end
|
||||
|
||||
def codespan(code)
|
||||
"<code>#{escape_tags(code)}</code>"
|
||||
end
|
||||
|
||||
def header(text, header_level)
|
||||
"<p>#{text}</p>"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def escape_tags(code)
|
||||
code.gsub(/</, '<').gsub(/>/, '>')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue