When input markdown contains HTML tags with attributes that contain / character (URLs being the most obvious cause), library fails to parse it properly.
Example input:
<iframe width='400' height='300' src='https://github.com'></iframe>
The output:
<p><iframe width='400' height='300' src='https://github.com'></iframe></p>
Expected output: HTML should pass through more or less untouched:
<iframe width='400' height='300' src='https://github.com'></iframe>
The issue here is that HtmlTag.ParseHelper does not correctly handle the / character in the attribute values, considering it, I guess, the end of tag, and then deciding that HTML is malformed and treats it as any other text.
The fix that worked for me is to replace:
|
while (!p.eof && !char.IsWhiteSpace(p.current) && p.current != '>' && p.current != '/') |
line with:
while (!p.eof && !char.IsWhiteSpace(p.current) && p.current != '>' && !p.DoesMatch("/>"))
But I am not sure it won't break something else.
When input markdown contains HTML tags with attributes that contain
/character (URLs being the most obvious cause), library fails to parse it properly.Example input:
The output:
Expected output: HTML should pass through more or less untouched:
The issue here is that
HtmlTag.ParseHelperdoes not correctly handle the/character in the attribute values, considering it, I guess, the end of tag, and then deciding that HTML is malformed and treats it as any other text.The fix that worked for me is to replace:
markdowndeep/Backup/MarkdownDeep/HtmlTag.cs
Line 328 in 76577d2
line with:
But I am not sure it won't break something else.