Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
mDuo13 opened this issue Sep 20, 2016 · 3 comments
Open

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

mDuo13 opened this issue Sep 20, 2016 · 3 comments
Labels
bug Bug report. core Related to the core parser code. someday-maybe Approved low priority request.

Comments

@mDuo13
Copy link

mDuo13 commented Sep 20, 2016

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.

@waylan
Copy link
Member

waylan commented Sep 20, 2016

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 waylan added this to the Version 3.0 milestone Sep 20, 2016
@waylan waylan added core Related to the core parser code. someday-maybe Approved low priority request. labels Sep 20, 2016
@waylan waylan added the bug Bug report. label Oct 23, 2018
@waylan waylan removed this from the Version 3.0 milestone Feb 7, 2019
@bndby
Copy link

bndby commented Oct 3, 2021

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

@waylan
Copy link
Member

waylan commented Oct 4, 2021

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Bug report. core Related to the core parser code. someday-maybe Approved low priority request.
Projects
None yet
Development

No branches or pull requests

3 participants