How to setup a pipeline to ignore certain markdown? #Question #439

Closed
opened 2026-01-29 14:36:42 +00:00 by claunia · 4 comments
Owner

Originally created by @fscopel on GitHub (Mar 9, 2021).

I need to NOT render for example [Google](http://google.com) into this <p><a href="http://google.com">Google</a></p>
Instead I want to result to be <p>[Google](http://google.com)</p>

How do I go about setting up the pipeline this way?

Originally created by @fscopel on GitHub (Mar 9, 2021). I need to NOT render for example `[Google](http://google.com)` into this `<p><a href="http://google.com">Google</a></p>` Instead I want to result to be `<p>[Google](http://google.com)</p>` How do I go about setting up the pipeline this way?
claunia added the question label 2026-01-29 14:36:42 +00:00
Author
Owner

@xoofx commented on GitHub (Mar 9, 2021):

You can try to create an extension that would remove the LinkInlineParser predefined in MarkdownPipelineBuilder

@xoofx commented on GitHub (Mar 9, 2021): You can try to create an extension that would remove the `LinkInlineParser` predefined in [MarkdownPipelineBuilder](https://github.com/xoofx/markdig/blob/640196a18f49ef1d87af044fe6ce70de21d47e8a/src/Markdig/MarkdownPipelineBuilder.cs#L43)
Author
Owner

@fscopel commented on GitHub (Mar 10, 2021):

@xoofx Thank you for pointing me in the right direction. I was able to remove it with something like this:

 class Program
    {
        static void Main(string[] args)
        {
            var sampleMarkdown = "[Google](http://google.com)";

            var modelPipeline = new MarkdownPipelineBuilder();
            var removeLinks = new RemoveInlineParser();

            modelPipeline.Extensions.AddIfNotAlready(removeLinks);
            var pipeline = modelPipeline.Build();

            var renderedHtml = Markdown.ToHtml(sampleMarkdown, pipeline);

            Console.WriteLine(renderedHtml);
            Console.ReadLine();
        }
    }

    class RemoveInlineParser : IMarkdownExtension
    {
        public void Setup(MarkdownPipelineBuilder pipeline)
        {
            //Remove LinkInlineParser
            var parser = pipeline.InlineParsers.First(o => o is LinkInlineParser);
            pipeline.InlineParsers.Remove(parser);
        }

        public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer)
        {
            //Nothing to do here.
        }
    }
@fscopel commented on GitHub (Mar 10, 2021): @xoofx Thank you for pointing me in the right direction. I was able to remove it with something like this: ``` class Program { static void Main(string[] args) { var sampleMarkdown = "[Google](http://google.com)"; var modelPipeline = new MarkdownPipelineBuilder(); var removeLinks = new RemoveInlineParser(); modelPipeline.Extensions.AddIfNotAlready(removeLinks); var pipeline = modelPipeline.Build(); var renderedHtml = Markdown.ToHtml(sampleMarkdown, pipeline); Console.WriteLine(renderedHtml); Console.ReadLine(); } } class RemoveInlineParser : IMarkdownExtension { public void Setup(MarkdownPipelineBuilder pipeline) { //Remove LinkInlineParser var parser = pipeline.InlineParsers.First(o => o is LinkInlineParser); pipeline.InlineParsers.Remove(parser); } public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer) { //Nothing to do here. } } ```
Author
Owner

@MihaZupan commented on GitHub (Mar 10, 2021):

You can access the parsers on the builder, so you should be able to simplify that to

var builder = new MarkdownPipelineBuilder();
builder.InlineParsers.TryRemove<LinkInlineParser>();
MarkdownPipeline pipeline = builder.Build();
@MihaZupan commented on GitHub (Mar 10, 2021): You can access the parsers on the builder, so you should be able to simplify that to ```c# var builder = new MarkdownPipelineBuilder(); builder.InlineParsers.TryRemove<LinkInlineParser>(); MarkdownPipeline pipeline = builder.Build(); ```
Author
Owner

@fscopel commented on GitHub (Mar 10, 2021):

I was just about to post! I was playing around with it a bit more, and indeed the Extensions don't seem nescessary.

        static void Main(string[] args)
        {
            var sampleMarkdown = @"[Google](http://google.com)";

            var modelPipeline = new MarkdownPipelineBuilder();

            var parser = modelPipeline.InlineParsers.First(o => o is LinkInlineParser);
            modelPipeline.InlineParsers.Remove(parser);

            var pipeline = modelPipeline.Build();

            var renderedHtml = Markdown.ToHtml(sampleMarkdown, pipeline);

            Console.WriteLine(renderedHtml);
            Console.ReadLine();
        }
@fscopel commented on GitHub (Mar 10, 2021): I was just about to post! I was playing around with it a bit more, and indeed the Extensions don't seem nescessary. ``` static void Main(string[] args) { var sampleMarkdown = @"[Google](http://google.com)"; var modelPipeline = new MarkdownPipelineBuilder(); var parser = modelPipeline.InlineParsers.First(o => o is LinkInlineParser); modelPipeline.InlineParsers.Remove(parser); var pipeline = modelPipeline.Build(); var renderedHtml = Markdown.ToHtml(sampleMarkdown, pipeline); Console.WriteLine(renderedHtml); Console.ReadLine(); } ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/markdig#439