[frontend] Implement mfm plain node, fix code formatting in RenderMfm

This commit is contained in:
Lilian 2024-07-04 19:54:40 +02:00
parent 0f97845b88
commit 989c5765fc
No known key found for this signature in database
2 changed files with 39 additions and 24 deletions

View file

@ -59,3 +59,9 @@
text-decoration-line: underline;
}
}
::deep {
.plain {
text-decoration: none;
}
}

View file

@ -44,12 +44,13 @@ public static class MfmRenderer
private static INode RenderNode(MfmNodeTypes.MfmNode node, IDocument document, List<EmojiResponse> emoji)
{
// Hard wrap makes this impossible to read
// @formatter:off
var rendered = node switch
{
MfmNodeTypes.MfmCenterNode mfmCenterNode => MfmCenterNode(mfmCenterNode, document),
MfmNodeTypes.MfmCodeBlockNode mfmCodeBlockNode => MfmCodeBlockNode(mfmCodeBlockNode, document),
MfmNodeTypes.MfmMathBlockNode mfmMathBlockNode =>
throw new NotImplementedException($"{mfmMathBlockNode.GetType()}"),
MfmNodeTypes.MfmMathBlockNode mfmMathBlockNode => throw new NotImplementedException($"{mfmMathBlockNode.GetType()}"),
MfmNodeTypes.MfmQuoteNode mfmQuoteNode => MfmQuoteNode(mfmQuoteNode, document),
MfmNodeTypes.MfmSearchNode mfmSearchNode => throw new NotImplementedException($"{mfmSearchNode.GetType()}"),
MfmNodeTypes.MfmBlockNode mfmBlockNode => throw new NotImplementedException($"{mfmBlockNode.GetType()}"),
@ -60,10 +61,9 @@ public static class MfmRenderer
MfmNodeTypes.MfmInlineCodeNode mfmInlineCodeNode => MfmInlineCodeNode(mfmInlineCodeNode, document),
MfmNodeTypes.MfmItalicNode mfmItalicNode => MfmItalicNode(mfmItalicNode, document),
MfmNodeTypes.MfmLinkNode mfmLinkNode => MfmLinkNode(mfmLinkNode, document),
MfmNodeTypes.MfmMathInlineNode mfmMathInlineNode =>
throw new NotImplementedException($"{mfmMathInlineNode.GetType()}"),
MfmNodeTypes.MfmMathInlineNode mfmMathInlineNode => throw new NotImplementedException($"{mfmMathInlineNode.GetType()}"),
MfmNodeTypes.MfmMentionNode mfmMentionNode => MfmMentionNode(mfmMentionNode, document),
MfmNodeTypes.MfmPlainNode mfmPlainNode => throw new NotImplementedException($"{mfmPlainNode.GetType()}"),
MfmNodeTypes.MfmPlainNode mfmPlainNode => MfmPlainNode(mfmPlainNode, document),
MfmNodeTypes.MfmSmallNode mfmSmallNode => MfmSmallNode(mfmSmallNode, document),
MfmNodeTypes.MfmStrikeNode mfmStrikeNode => MfmStrikeNode(mfmStrikeNode, document),
MfmNodeTypes.MfmTextNode mfmTextNode => MfmTextNode(mfmTextNode, document),
@ -71,6 +71,8 @@ public static class MfmRenderer
MfmNodeTypes.MfmInlineNode mfmInlineNode => throw new NotImplementedException($"{mfmInlineNode.GetType()}"),
_ => throw new ArgumentOutOfRangeException(nameof(node))
};
// @formatter:on
if (node.Children.Length > 0)
{
foreach (var childNode in node.Children)
@ -91,6 +93,13 @@ public static class MfmRenderer
return rendered;
}
private static INode MfmPlainNode(MfmNodeTypes.MfmPlainNode _, IDocument document)
{
var el = document.CreateElement("span");
el.ClassName = "plain";
return el;
}
private static INode MfmCenterNode(MfmNodeTypes.MfmCenterNode _, IDocument document)
{
var el = document.CreateElement("div");