diff --git a/DiscordChatExporter.Core.Rendering/HtmlChatLogRenderer.cs b/DiscordChatExporter.Core.Rendering/HtmlChatLogRenderer.cs index 331c2b26..c7a5d891 100644 --- a/DiscordChatExporter.Core.Rendering/HtmlChatLogRenderer.cs +++ b/DiscordChatExporter.Core.Rendering/HtmlChatLogRenderer.cs @@ -46,7 +46,7 @@ namespace DiscordChatExporter.Core.Rendering return true; }).Select(g => new MessageGroup(g.First().Author, g.First().Timestamp, g)); - private string FormatMarkdown(Node node, bool isTopLevel, bool isSingle) + private string FormatMarkdown(Node node, bool isJumbo) { // Text node if (node is TextNode textNode) @@ -136,8 +136,8 @@ namespace DiscordChatExporter.Core.Rendering // Get emoji image URL var emojiImageUrl = Emoji.GetImageUrl(emojiNode.Id, emojiNode.Name, emojiNode.IsAnimated); - // Emoji can be jumboable if it's the only top-level node - var jumboableCssClass = isTopLevel && isSingle ? "emoji--large" : null; + // Make emoji large if it's jumbo + var jumboableCssClass = isJumbo ? "emoji--large" : null; return $"\"{emojiNode.Name}\""; } @@ -154,8 +154,10 @@ namespace DiscordChatExporter.Core.Rendering private string FormatMarkdown(IReadOnlyList nodes, bool isTopLevel) { - var isSingle = nodes.Count == 1; - return nodes.Select(n => FormatMarkdown(n, isTopLevel, isSingle)).JoinToString(""); + // Emojis are jumbo if all top-level nodes are emoji nodes, disregarding whitespace + var isJumbo = isTopLevel && nodes.Where(n => !n.Source.IsNullOrWhiteSpace()).All(n => n is EmojiNode); + + return nodes.Select(n => FormatMarkdown(n, isJumbo)).JoinToString(""); } private string FormatMarkdown(string markdown) => FormatMarkdown(MarkdownParser.Parse(markdown), true);