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

Description list extension generates incorrect HTML when using link reference definitions #692

Closed
ramsey opened this issue Jul 28, 2021 · 3 comments
Assignees
Labels
bug Something isn't working right fixed Fix has been implemented

Comments

@ramsey
Copy link

ramsey commented Jul 28, 2021

Version(s) affected: 2.0.0

Description
Link reference definitions appear to confuse the parser when using the description list extension.

For the given Markdown:

[Lorem ipsum dolor sit amet][foo], consectetur adipiscing elit. Cras vitae
fringilla nulla. Etiam ac lectus scelerisque justo laoreet cursus. Mauris ut
dictum urna. Integer sit amet nibh aliquam, aliquet orci ut, condimentum diam.
Vestibulum varius purus at pulvinar feugiat. Donec facilisis mauris non sapien
ullamcorper semper. Nunc quis sapien eu metus tempor elementum a at mi. Fusce
at nisi et lectus lobortis rutrum.

[foo]: https://example.com

I expect the following HTML produced:

<p><a href="https://example.com">Lorem ipsum dolor sit amet</a>, consectetur adipiscing elit. Cras vitae
fringilla nulla. Etiam ac lectus scelerisque justo laoreet cursus. Mauris ut
dictum urna. Integer sit amet nibh aliquam, aliquet orci ut, condimentum diam.
Vestibulum varius purus at pulvinar feugiat. Donec facilisis mauris non sapien
ullamcorper semper. Nunc quis sapien eu metus tempor elementum a at mi. Fusce
at nisi et lectus lobortis rutrum.</p>

However, the following HTML is actually produced:

<dl>
<dt>[Lorem ipsum dolor sit amet][foo], consectetur adipiscing elit. Cras vitae</dt>
<dt>fringilla nulla. Etiam ac lectus scelerisque justo laoreet cursus. Mauris ut</dt>
<dt>dictum urna. Integer sit amet nibh aliquam, aliquet orci ut, condimentum diam.</dt>
<dt>Vestibulum varius purus at pulvinar feugiat. Donec facilisis mauris non sapien</dt>
<dt>ullamcorper semper. Nunc quis sapien eu metus tempor elementum a at mi. Fusce</dt>
<dt>at nisi et lectus lobortis rutrum.</dt>
<dd><p>https://example.com</p></dd>
</dl>

How to reproduce

Run composer require league/commonmark and then execute the following script:

<?php

declare(strict_types=1);

use League\CommonMark\Environment\Environment;
use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
use League\CommonMark\Extension\DescriptionList\DescriptionListExtension;
use League\CommonMark\MarkdownConverter;

require_once 'vendor/autoload.php';

$environment = new Environment();
$environment->addExtension(new CommonMarkCoreExtension());
$environment->addExtension(new DescriptionListExtension());

$converter = new MarkdownConverter($environment);

$content = <<<'MD'
[Lorem ipsum dolor sit amet][foo], consectetur adipiscing elit. Cras vitae
fringilla nulla. Etiam ac lectus scelerisque justo laoreet cursus. Mauris ut
dictum urna. Integer sit amet nibh aliquam, aliquet orci ut, condimentum diam.
Vestibulum varius purus at pulvinar feugiat. Donec facilisis mauris non sapien
ullamcorper semper. Nunc quis sapien eu metus tempor elementum a at mi. Fusce
at nisi et lectus lobortis rutrum.

[foo]: https://example.com

MD;

echo $converter->convertToHtml($content);
@colinodell colinodell added the bug Something isn't working right label Jul 28, 2021
@colinodell colinodell self-assigned this Jul 28, 2021
@colinodell
Copy link
Member

It seems the code was looking for a semi-colon anywhere in the line, not just at the start of the line 🤦 Fixed via commit c701d5f.

@colinodell colinodell added the fixed Fix has been implemented label Jul 31, 2021
@colinodell
Copy link
Member

Fix has been released in 2.0.1! 🎉

@ramsey
Copy link
Author

ramsey commented Aug 1, 2021

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working right fixed Fix has been implemented
Projects
None yet
Development

No branches or pull requests

2 participants