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 · 1 comment
Open

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

mDuo13 opened this issue Sep 20, 2016 · 1 comment

Comments

@mDuo13
Copy link

@mDuo13 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 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 the bug label Oct 23, 2018
@waylan waylan removed this from the Version 3.0 milestone Feb 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.