public static void TryPrepend <TRenderer>(this ObjectRendererCollection list)
     where TRenderer : class, IMarkdownObjectRenderer, new()
 {
     if (!list.Contains <TRenderer>())
     {
         list.Insert(0, new TRenderer());
     }
 }
Пример #2
0
 /// <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);
 }
Пример #3
0
 /// <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());
            }
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RendererBase"/> class.
 /// </summary>
 protected RendererBase()
 {
     ObjectRenderers  = new ObjectRendererCollection();
     renderersPerType = new Dictionary <Type, IMarkdownObjectRenderer>();
 }
Пример #7
0
 /// <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);
 }
Пример #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RendererBase"/> class.
 /// </summary>
 protected RendererBase()
 {
     ObjectRenderers = new ObjectRendererCollection();
 }