-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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
Fixed https://github.com/chjj/marked/issues/465 #974
Conversation
LGTM The bug that code was meant to fix (#77) seems to still work |
@UziTech, when I do the following (with this my PR): const marked = require('./');
const str = `[link][1]
* List
[1]: http://example.com
`;
const md = marked(str);
console.log(md); marked output this: <p><a href="http://example.com">link</a></p>
<ul>
<li>List</li>
</ul> What is exactly awaits @tlvince. |
By the way, and without my PR, it works as expected. |
@@ -39,10 +39,6 @@ block.list = replace(block.list) | |||
('def', '\\n+(?=' + block.def.source + ')') | |||
(); | |||
|
|||
block.blockquote = replace(block.blockquote) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is plain wrong, cannot remove this without changing the block.blockquote regex
@@ -6,7 +6,8 @@ | |||
<hr> | |||
|
|||
<blockquote> | |||
<p>hello</p> | |||
<p>hello | |||
[2]: hello</p> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
from def_blocks.text:
> hello
[2]: hello
I'm not sure this should/should not be parsed as a link definition. It is outside a blockquote.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As we now know, this edit was correct because we have rule A link reference definition cannot interrupt a paragraph.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
http://spec.commonmark.org/0.28/#example-210
Ok, because of the laziness rule, '[2]: hello' is part of the blockquote, too, and of the same paragraph of the previous line. So it is not a link def. This is correct then!
@@ -24,5 +25,6 @@ | |||
<blockquote> | |||
<p>foo | |||
bar | |||
[1]: foo |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a problem in https://github.com/KostyaTretyak/marked/blob/98ac7a43958014832788b9d01580f394c84bfb27/test/tests/def_blocks.text :
The [1]
at line 2 is interpreted as a shortcut link to link definition at line 20, so it can be confusing. However, I think it (line 2) should be parsed as a link def itself, because it follows the correct syntax, event if it is inside a blockquote, because it is allowed by the commonmark spec.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As we now know, this edit was correct because we have rule A link reference definition cannot interrupt a paragraph.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is no broad consensus on this one:
http://johnmacfarlane.net/babelmark2/?normalize=1&text=%3E+foo%0A%3E+bar%0A%5B1%5D%3A+foo%0A%3E+bar
However, commonmark.js parses it as you wrote.
I have worked on fixing rules for link defs, they should pass the def_blocks test as written by @KostyaTretyak (which we've deemed correct per commonmark), and also almost every example from commonmark. I will submit a pr once I've reviewed and rearranged commits. |
…agraph + blockquote laziness rule, according to commonmark spec (see review of markedjs#974. Partial replay of 98ac7a4)
…agraph + blockquote laziness rule, according to commonmark spec (see review of markedjs#974. Partial replay of 98ac7a4)
No description provided.