You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# 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.
The text was updated successfully, but these errors were encountered:
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.
@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.
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:
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):As you can see, in the Python output, it retains the [brackets around link label][] in the output HTML.
The text was updated successfully, but these errors were encountered: