public IHtmlDocument BBCodeConversion(IHtmlDocument doc) { if (!BBIgnoringLinks) { foreach (var element in doc.All.OfType <IHtmlAnchorElement>()) { element.OuterHtml = $"[url={element.Href}]{element.InnerHtml}[/url]"; } } if (!BBIgnoringImages) { foreach (var element in doc.All.OfType <IHtmlImageElement>()) { element.OuterHtml = $"[img]{element.Source}[/img]"; } } if (!BBIgnoringLists) { foreach (var element in doc.All.OfType <IHtmlOrderedListElement>()) { element.OuterHtml = $"[olist]{element.InnerHtml}[/olist]"; } foreach (var element in doc.All.OfType <IHtmlUnorderedListElement>()) { element.OuterHtml = $"[list]{element.InnerHtml}[/list]"; } foreach (var element in doc.All.OfType <IHtmlListItemElement>()) { element.OuterHtml = $"[*]{element.InnerHtml}"; } } if (!BBIgnoringHeaders) { foreach (var element in doc.All.OfType <IHtmlHeadingElement>()) { //Ugly placeholder for now. var comparer = StringComparison.OrdinalIgnoreCase; var text = element.OuterHtml; text = text.Replace("<h1>", "[h1]", comparer).Replace("<h2>", "[h2]", comparer).Replace("<h3>", "[h3]", comparer).Replace("<h4>", "[h4]", comparer).Replace("<h5>", "[h5]", comparer).Replace("<h6>", "[h6]", comparer); text = text.Replace("</h1>", "[/h1]", comparer).Replace("</h2>", "[/h2]", comparer).Replace("</h3>", "[/h3]", comparer).Replace("</h4>", "[/h4]", comparer).Replace("</h5>", "[/h5]", comparer).Replace("</h6>", "[/h6]", comparer); element.OuterHtml = text; } } if (BBIgnoredTags.IndexOf(TagNames.Strong) < 0) { foreach (var element in doc.GetElementsByTagName(TagNames.Strong)) { element.OuterHtml = $"[b]{element.InnerHtml}[/b]"; } } if (BBIgnoredTags.IndexOf(TagNames.Em) < 0) { foreach (var element in doc.GetElementsByTagName(TagNames.Em)) { element.OuterHtml = $"[i]{element.InnerHtml}[/i]"; } } if (BBIgnoredTags.IndexOf(TagNames.U) < 0) { foreach (var element in doc.GetElementsByTagName(TagNames.U)) { element.OuterHtml = $"[u]{element.InnerHtml}[/u]"; } } if (BBIgnoredTags.IndexOf(TagNames.P) < 0 && BBIgnoredElements.IndexOf(typeof(IHtmlParagraphElement)) < 0) { foreach (var element in doc.All.OfType <IHtmlParagraphElement>()) { element.OuterHtml = element.InnerHtml + Environment.NewLine; } } if (BBIgnoredTags.IndexOf(TagNames.Code) < 0) { foreach (var element in doc.GetElementsByTagName(TagNames.Code)) { element.OuterHtml = $"[code]{element.InnerHtml}[/code]"; } } if (BBIgnoredTags.IndexOf(TagNames.Pre) < 0) { foreach (var element in doc.GetElementsByTagName(TagNames.Pre)) { element.OuterHtml = $"[noparse]{element.InnerHtml}[/noparse]"; } } if (BBIgnoredTags.IndexOf(TagNames.Strike) < 0) { foreach (var element in doc.GetElementsByTagName(TagNames.Strike)) { element.OuterHtml = $"[strike]{element.InnerHtml}[/strike]"; } } /* * foreach (var element in doc.All) * { * Log.Here().Activity($"Element | Type {element.GetType()} Content: {element.OuterHtml}"); * } */ return(doc); }
public void AddTagToIgnoreList(params string[] tagNames) { BBIgnoredTags.AddRange(tagNames); }