private async Task <string> OnResolveMarkdownSnippet(IMetadata data, IPage page) { var assetName = data.GetParameterOrDefault <string>("name"); var snippetAsset = page.FindAsset(assetName); m_SnippetIds.Add(snippetAsset.Id); var markdown = snippetAsset.AsTextContent(); var html = await m_App.Compiler.StaticContentTransformer.Transform(markdown); var htmlCode = await m_App.Compiler.StaticContentTransformer.Transform("``` html" + Environment.NewLine + html + Environment.NewLine + "```"); var mdCode = await m_App.Compiler.StaticContentTransformer.Transform("``` md" + Environment.NewLine + markdown + Environment.NewLine + "```"); var tab = new StringBuilder(); var tabId = System.IO.Path.GetFileNameWithoutExtension(assetName) + "-tab"; tab.AppendLine($"<div id=\"{tabId}\">"); tab.AppendLine("<div class=\"code-tab\">"); tab.AppendLine($"<button class=\"tablinks active\" onclick=\"openTab(event, '{tabId}', '{tabId}-md')\">Markdown</button>"); tab.AppendLine($"<button class=\"tablinks\" onclick=\"openTab(event, '{tabId}', '{tabId}-html')\">HTML</button>"); tab.AppendLine($"<button class=\"tablinks\" onclick=\"openTab(event, '{tabId}', '{tabId}-preview')\">Preview</button>"); tab.AppendLine("</div>"); tab.AppendLine($"<div id=\"{tabId}-md\" class=\"tabcontent\" style=\"display: block\">"); tab.AppendLine(mdCode); tab.AppendLine("</div>"); tab.AppendLine($"<div id=\"{tabId}-html\" class=\"tabcontent\" style=\"display: none\">"); tab.AppendLine(htmlCode); tab.AppendLine("</div>"); tab.AppendLine($"<div id=\"{tabId}-preview\" class=\"tabcontent\" style=\"display: none\">"); tab.AppendLine("<div style=\"background: #eff0f1; margin: 1em 0px\">" + html + "</div>"); tab.AppendLine("</div>"); tab.AppendLine("</div>"); return(tab.ToString()); }