[backend/libmfm] Fix MfmSerializer dropping leading & trailing whitespace on recursive calls

This commit is contained in:
Laura Hausmann 2024-11-10 22:24:55 +01:00
parent e73b68dc0d
commit 73783fa0ee
No known key found for this signature in database
GPG key ID: D044E84C5BE01605

View file

@ -5,7 +5,9 @@ namespace Iceshrimp.Backend.Core.Helpers.LibMfm.Serialization;
public static class MfmSerializer public static class MfmSerializer
{ {
public static string Serialize(IEnumerable<MfmNode> nodes) public static string Serialize(IEnumerable<MfmNode> nodes) => SerializeInternal(nodes).Trim();
private static string SerializeInternal(IEnumerable<MfmNode> nodes)
{ {
var result = new StringBuilder(); var result = new StringBuilder();
@ -36,14 +38,14 @@ public static class MfmSerializer
case MfmBoldNode: case MfmBoldNode:
{ {
result.Append("**"); result.Append("**");
result.Append(Serialize(node.Children)); result.Append(SerializeInternal(node.Children));
result.Append("**"); result.Append("**");
break; break;
} }
case MfmCenterNode: case MfmCenterNode:
{ {
result.Append("<center>"); result.Append("<center>");
result.Append(Serialize(node.Children)); result.Append(SerializeInternal(node.Children));
result.Append("</center>"); result.Append("</center>");
break; break;
} }
@ -64,7 +66,7 @@ public static class MfmSerializer
} }
result.Append(' '); result.Append(' ');
result.Append(Serialize(node.Children)); result.Append(SerializeInternal(node.Children));
result.Append(']'); result.Append(']');
break; break;
} }
@ -81,7 +83,7 @@ public static class MfmSerializer
case MfmItalicNode: case MfmItalicNode:
{ {
result.Append('*'); result.Append('*');
result.Append(Serialize(node.Children)); result.Append(SerializeInternal(node.Children));
result.Append('*'); result.Append('*');
break; break;
} }
@ -89,7 +91,7 @@ public static class MfmSerializer
{ {
if (mfmLinkNode.Silent) result.Append('?'); if (mfmLinkNode.Silent) result.Append('?');
result.Append('['); result.Append('[');
result.Append(Serialize(node.Children)); result.Append(SerializeInternal(node.Children));
result.Append(']'); result.Append(']');
result.Append($"({mfmLinkNode.Url})"); result.Append($"({mfmLinkNode.Url})");
break; break;
@ -119,14 +121,14 @@ public static class MfmSerializer
case MfmSmallNode: case MfmSmallNode:
{ {
result.Append("<small>"); result.Append("<small>");
result.Append(Serialize(node.Children)); result.Append(SerializeInternal(node.Children));
result.Append("</small>"); result.Append("</small>");
break; break;
} }
case MfmStrikeNode: case MfmStrikeNode:
{ {
result.Append("~~"); result.Append("~~");
result.Append(Serialize(node.Children)); result.Append(SerializeInternal(node.Children));
result.Append("~~"); result.Append("~~");
break; break;
} }
@ -145,7 +147,7 @@ public static class MfmSerializer
} }
case MfmQuoteNode mfmQuoteNode: case MfmQuoteNode mfmQuoteNode:
{ {
var serialized = Serialize(node.Children); var serialized = SerializeInternal(node.Children);
var split = serialized.Split('\n'); var split = serialized.Split('\n');
for (var i = 0; i < split.Length; i++) for (var i = 0; i < split.Length; i++)
@ -167,6 +169,6 @@ public static class MfmSerializer
} }
} }
return result.ToString().Trim(); return result.ToString();
} }
} }