[PR #578] [CLOSED] ADD: Context to Renderer #1123

Open
opened 2026-01-29 14:50:03 +00:00 by claunia · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/xoofx/markdig/pull/578
Author: @grishat
Created: 12/3/2021
Status: Closed

Base: masterHead: add-context-to-renderer


📝 Commits (1)

📊 Changes

6 files changed (+22 additions, -13 deletions)

View changed files

📝 src/Markdig/Markdown.cs (+5 -5)
📝 src/Markdig/MarkdownPipeline.cs (+5 -3)
📝 src/Markdig/Renderers/HtmlRenderer.cs (+1 -1)
📝 src/Markdig/Renderers/Normalize/NormalizeRenderer.cs (+1 -1)
📝 src/Markdig/Renderers/Roundtrip/RoundtripRenderer.cs (+1 -1)
📝 src/Markdig/Renderers/TextRendererBase.cs (+9 -2)

📄 Description

Added MarkdownParserContext to Renderer.

I wrote my own LinkExtension render TryLinkInlineRenderer, and need context access from HtmlRenderer, that available only in parser.

    public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer)
    {
        if (renderer is HtmlRenderer htmlRenderer)
        {
            var inlineRenderer = htmlRenderer.ObjectRenderers.FindExact<LinkInlineRenderer>();
            if (inlineRenderer != null)
            {
                inlineRenderer.TryWriters.Remove(TryLinkInlineRenderer);
                inlineRenderer.TryWriters.Add(TryLinkInlineRenderer);
            }
        }
    }

    private bool TryLinkInlineRenderer(HtmlRenderer renderer, LinkInline link)
    {
        ...
       var propValue = (string?)renderer.Context?.Properties["PropName"];
        ...
    }

I think the context should be available both in the parser and in the render. This required minimal changes.
What do you think?


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/xoofx/markdig/pull/578 **Author:** [@grishat](https://github.com/grishat) **Created:** 12/3/2021 **Status:** ❌ Closed **Base:** `master` ← **Head:** `add-context-to-renderer` --- ### 📝 Commits (1) - [`bd124f0`](https://github.com/xoofx/markdig/commit/bd124f073472f4d394091da3fdea179253183f39) ADD: Context to Renderer ### 📊 Changes **6 files changed** (+22 additions, -13 deletions) <details> <summary>View changed files</summary> 📝 `src/Markdig/Markdown.cs` (+5 -5) 📝 `src/Markdig/MarkdownPipeline.cs` (+5 -3) 📝 `src/Markdig/Renderers/HtmlRenderer.cs` (+1 -1) 📝 `src/Markdig/Renderers/Normalize/NormalizeRenderer.cs` (+1 -1) 📝 `src/Markdig/Renderers/Roundtrip/RoundtripRenderer.cs` (+1 -1) 📝 `src/Markdig/Renderers/TextRendererBase.cs` (+9 -2) </details> ### 📄 Description Added MarkdownParserContext to Renderer. I wrote my own LinkExtension render `TryLinkInlineRenderer`, and need context access from `HtmlRenderer`, that available only in parser. ``` public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer) { if (renderer is HtmlRenderer htmlRenderer) { var inlineRenderer = htmlRenderer.ObjectRenderers.FindExact<LinkInlineRenderer>(); if (inlineRenderer != null) { inlineRenderer.TryWriters.Remove(TryLinkInlineRenderer); inlineRenderer.TryWriters.Add(TryLinkInlineRenderer); } } } private bool TryLinkInlineRenderer(HtmlRenderer renderer, LinkInline link) { ... var propValue = (string?)renderer.Context?.Properties["PropName"]; ... } ``` I think the context should be available both in the parser and in the render. This required minimal changes. What do you think? --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
claunia added the pull-request label 2026-01-29 14:50:03 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/markdig#1123