Android-FileBrowser-FilePicker icon indicating copy to clipboard operation
Android-FileBrowser-FilePicker copied to clipboard

Reference links don't work if the link label contains backticks

Open mDuo13 opened this issue 8 years ago • 3 comments

Reference Links with Formatting Test

An inline link can contain various Markdown formatting.

A reference link works when you don't have any formatting.

A reference link with formatting also renders properly.

If that formatting contains code backticks then it should, but the Python renderer doesn't handle it correctly.

Source:

# Reference Links with Formatting Test

An [_inline_ link **can** contain various `Markdown` formatting.](https://github.com/)

A reference link [works when you don't have any formatting][].

[works when you don't have any formatting]: https://example.com/

A [reference link _with_ formatting][] also renders properly.

[reference link _with_ formatting]: https://example.com/ref-link-with-formatting

If that [formatting contains `code` backticks][] then it should, but the Python renderer doesn't handle it correctly.

[formatting contains `code` backticks]: https://example.com/ref-link-with-code

Output of python -m markdown with Markdown 2.6.2 module (verified with Python 2.7.12 and Python 3.5.2 both on Linux):

<h1>Reference Links with Formatting Test</h1>
<p>An <a href="https://github.com/"><em>inline</em> link <strong>can</strong> contain various <code>Markdown</code> formatting.</a></p>
<p>A reference link <a href="https://example.com/">works when you don't have any formatting</a>.</p>
<p>A <a href="https://example.com/ref-link-with-formatting">reference link <em>with</em> formatting</a> also renders properly?</p>
<p>If that [formatting contains <code>code</code> backticks][] then it doesn't?</p>[mduo13@Manatsu ~]$ cat md_reflink_test.md | python -m markdown
<h1>Reference Links with Formatting Test</h1>
<p>An <a href="https://github.com/"><em>inline</em> link <strong>can</strong> contain various <code>Markdown</code> formatting.</a></p>
<p>A reference link <a href="https://example.com/">works when you don't have any formatting</a>.</p>
<p>A <a href="https://example.com/ref-link-with-formatting">reference link <em>with</em> formatting</a> also renders properly.</p>
<p>If that [formatting contains <code>code</code> backticks][] then it should, but the Python renderer doesn't handle it correctly.</p>

As you can see, in the Python output, it retains the [brackets around link label][] in the output HTML.

mDuo13 avatar Sep 20 '16 20:09 mDuo13

Interestingly, the oldest implementations (the reference implementation and those which most closely follow it) all behave the same way. I'm comfortable being in that company. Personally, I never use code spans in my references (I number them). Regardless, this is a potentially surprising behavior and could reasonably be considered a bug.

However, the current implementation is highly dependent on the order in which regexs are run against the source text (as is the reference implementation). The only reason Markdown text inside a code span isn't parsed is because the regex to match the code span is run first. Therefore, the link no longer contains a code span (as Markdown formatted text) by the time the reference link code is run and the link label doesn't match a known reference key. The only way to fix this is to completely refactor the entirety of the inline processing code.

It just so happens that I have started some work on that for version 3.0. Until then, this will have to stay as-is, which I'm okay with for the reasons mentioned above.

waylan avatar Sep 20 '16 23:09 waylan

Is this bug fixed in 3+ version?

I cann't render reference links in node.js documentation

Example: https://github.com/nodejs/node/blob/master/doc/api/fs.md#filehandleappendfiledata-options

bndby avatar Oct 03 '21 20:10 bndby

@bndby if you read my previous comments closely you will see that we don't really consider this to be a bug as the current behavior matches the reference implementation. That said, we are not opposed to applying a fix if someone wants to take the time to developed one. However, I have no need for a fix and am not interested in spending the time to work on one. Therefore, I don't expect this to ever be fixed.

waylan avatar Oct 04 '21 15:10 waylan