diff --git a/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs b/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs index 0d7aacba..19b23caa 100644 --- a/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs +++ b/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs @@ -17,7 +17,7 @@ public static class MfmSerializer { result.Append($"\n```{mfmCodeBlockNode.Language?.Value ?? ""}\n"); result.Append(mfmCodeBlockNode.Code); - result.Append("\n```\n"); + result.Append("\n```\n\n"); break; } case MfmMathBlockNode mfmMathBlockNode: diff --git a/Iceshrimp.Parsing/Mfm.fs b/Iceshrimp.Parsing/Mfm.fs index 752d54bc..9b14ce54 100644 --- a/Iceshrimp.Parsing/Mfm.fs +++ b/Iceshrimp.Parsing/Mfm.fs @@ -208,7 +208,7 @@ module private MfmParser = >>. opt (many1CharsTill asciiLetter (lookAhead newline)) .>>. (skipNewline >>. manyCharsTill anyChar (attempt (skipNewline >>. skipString "```"))) - .>> (opt <| attempt (skipNewline >>. nextCharSatisfies isNewline)) + .>> (opt <| attempt (skipNewline >>. skipNewline)) |>> fun (lang: string option, code: string) -> MfmCodeBlockNode(code, lang) :> MfmNode let mathNode = diff --git a/Iceshrimp.Tests/Parsing/MfmTests.cs b/Iceshrimp.Tests/Parsing/MfmTests.cs index b1363df7..5d92a52c 100644 --- a/Iceshrimp.Tests/Parsing/MfmTests.cs +++ b/Iceshrimp.Tests/Parsing/MfmTests.cs @@ -153,7 +153,7 @@ public class MfmTests [ new MfmTextNode("test 123\n"), new MfmCodeBlockNode("this is a code block", null), - new MfmTextNode("\ntest 123") + new MfmTextNode("test 123") ]; var res = Mfm.parse(input);