xoofx / markdig

A fast, powerful, CommonMark compliant, extensible Markdown processor for .NET
BSD 2-Clause "Simplified" License
4.33k stars 448 forks source link

Conditionally process url instead of encoding #667

Open marcselman opened 2 years ago

marcselman commented 2 years ago

Markdown links will automatically be URL encoded when turned into an HTML anchor. Is it possible to process the url string instead of it gettingURL encoded?

For example:

This is [a test](#|MY_URL|#). Normal [link](https://url.com/my|title)

will be turned into:

This is <a href="#%7CMY_URL%7C#">a test</a>. Normal <a href="https://url.com/my%7Ctitle">link</a>

I want to match urls that start with #| and end with |# and replace that with *| and |* consecutively and skip url encoding (because it will be sent to another process that expects this format). So that the output would be:

This is <a href="*|MY_URL|*">a test</a>. Normal <a href="https://url.com/my%7Ctitle">link</a>

Is that possible by creating an extension for example?

xoofx commented 1 year ago

Is that possible by creating an extension for example?

Yes, there are many potential solutions, but maybe inheriting LinkInlineRenderer to override the default renderer and avoid the encoding is a good place to try.

jjxtra commented 1 year ago

How to override / inherit in this way?