end
end
- def markdown_to_html(text) do
- Earmark.as_html!(text, %Earmark.Options{compact_output: true})
+ def markdown_to_html(text, opts \\ %{}) do
+ Earmark.as_html!(text, %Earmark.Options{compact_output: true} |> Map.merge(opts))
end
def html_escape({text, mentions, hashtags}, type) do
end
end
- # https://github.com/misskey-dev/misskey/pull/8787
- # Misskey has an awful tendency to drop all custom formatting when it sends remotely
- # So this basically reprocesses their MFM source
+ # See https://akkoma.dev/FoundKeyGang/FoundKey/issues/343
+ # Misskey/Foundkey drops some of the custom formatting when it sends remotely
+ # So this basically reprocesses the MFM source
defp fix_misskey_content(
%{"source" => %{"mediaType" => "text/x.misskeymarkdown", "content" => content}} = object
)
Map.put(object, "content", linked)
end
+ # See https://github.com/misskey-dev/misskey/pull/8787
+ # This is for compatibility with older Misskey instances
defp fix_misskey_content(%{"_misskey_content" => content} = object) when is_binary(content) do
mention_handler = fn nick, buffer, opts, acc ->
remote_mention_resolver(object, nick, buffer, opts, acc)
def format_input(text, "text/x.misskeymarkdown", options) do
text
- |> Formatter.markdown_to_html()
+ |> Formatter.markdown_to_html(%{breaks: true})
|> MfmParser.Parser.parse()
|> MfmParser.Encoder.to_html()
|> Formatter.linkify(options)
"summary": null,
"content": "this does not get replaced",
"source": {
- "content": "@akkoma_user @remote_user @full_tag_remote_user@misskey.local.live @oops_not_a_mention linkifylink #dancedance $[jelly mfm goes here] \n\n## aaa",
+ "content": "@akkoma_user @remote_user @full_tag_remote_user@misskey.local.live @oops_not_a_mention linkifylink #dancedance $[jelly mfm goes here] \n\n## aaa\n\nsome text\nnewline",
"mediaType": "text/x.misskeymarkdown"
},
"published": "2022-07-10T15:37:36.368Z",
assert content =~
"<span class=\"mfm _mfm_jelly_\" style=\"display: inline-block; animation: 1s linear 0s infinite normal both running mfm-rubberBand;\">mfm goes here</span> </p>aaa"
+
+ assert content =~ "some text<br/>newline"
end
test "a misskey MFM status with a _misskey_content field should work and be linked", _ do