public static void TryPrepend <TRenderer>(this ObjectRendererCollection list) where TRenderer : class, IMarkdownObjectRenderer, new() { if (!list.Contains <TRenderer>()) { list.Insert(0, new TRenderer()); } }
/// <summary> /// Disable link rendering and make it plain text. /// </summary> /// <param name="renderer">The object renderer collection.</param> /// <param name="disable">Whether to disable link rendering.</param> /// <returns>The original collection to chain.</returns> public static ObjectRendererCollection DisableLink(this ObjectRendererCollection renderer, bool disable = true) { if (!disable) { return(renderer); } renderer.Replace <LinkInlineRenderer>(new ProtectedLinkInlineRenderer()); return(renderer); }
/// <summary> /// Disable HTML rendering and make it plain text. /// </summary> /// <param name="renderer">The object renderer collection.</param> /// <param name="disable">Whether to disable html rendering.</param> /// <returns>The original collection to chain.</returns> public static ObjectRendererCollection DisableHtml(this ObjectRendererCollection renderer, bool disable = true) { if (!disable) { return(renderer); } renderer.Replace <HtmlBlockRenderer>(new HtmlEscapedRenderer()); renderer.Replace <HtmlInlineRenderer>(new HtmlEscapedInlineRenderer()); return(renderer); }
public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer) { HtmlRenderer htmlRenderer = renderer as HtmlRenderer; ObjectRendererCollection renderers = htmlRenderer?.ObjectRenderers; if (renderers != null && !renderers.Contains <ComponentRenderer>()) { renderers.Add(new ComponentRenderer()); } }
/// <summary> /// Replaces a default object renderer. /// </summary> /// <typeparam name="TOriginal">Type of the object renderer to replace</typeparam> /// <param name="renderers">Object renderer collection</param> /// <param name="replacement">Replacement object renderer</param> /// <returns>The object renderer collection</returns> public static ObjectRendererCollection Replace <TOriginal>( this ObjectRendererCollection renderers, IMarkdownObjectRenderer replacement ) where TOriginal : IMarkdownObjectRenderer { var index = renderers.FindIndex(renderer => renderer.GetType() == typeof(TOriginal)); if (index == -1) { throw new InvalidOperationException($"Could not find original object renderer for {typeof(TOriginal)}"); } renderers.RemoveAt(index); renderers.Insert(index, replacement); return(renderers); }
/// <summary> /// Initializes a new instance of the <see cref="RendererBase"/> class. /// </summary> protected RendererBase() { ObjectRenderers = new ObjectRendererCollection(); renderersPerType = new Dictionary <Type, IMarkdownObjectRenderer>(); }
/// <summary> /// Fix code rendering. /// </summary> /// <param name="renderer">The object renderer collection.</param> /// <returns>The original collection to chain.</returns> public static ObjectRendererCollection FixCodeRender(this ObjectRendererCollection renderer) { renderer.ReplaceOrAdd <CodeBlockRenderer>(new CodeBlockRenderer()); return(renderer); }
/// <summary> /// Initializes a new instance of the <see cref="RendererBase"/> class. /// </summary> protected RendererBase() { ObjectRenderers = new ObjectRendererCollection(); }