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

Erroneous paragraphs inserted into list items when specifying two consecutive lists #663

Closed
joepie91 opened this issue Sep 21, 2015 · 4 comments

Comments

@joepie91
Copy link

When specifying the following Markdown (without any non-default options specified for marked):

* BTC - Bitcoin (Blockchain.info)
* USD - United States Dollar (ECB, via fixer.io)
* CAD - Canadian Dollar (ECB, via fixer.io)
* GBP - British Pound (ECB, via fixer.io)
* CNY - Chinese Yuan (ECB, via fixer.io)
* RUB - Russian Ruble (ECB, via fixer.io)
* JPY - Japanese Yen (ECB, via fixer.io)
* AUD - Australian Dollar (ECB, via fixer.io)
* NZD - New Zealand Dollar (ECB, via fixer.io)

* BGN - Bulgarian Lev (ECB, via fixer.io)
* BRL - Brazilian Real (ECB, via fixer.io)
* CHF - Swiss Franc (ECB, via fixer.io)
* CZK - Czech Koruna (ECB, via fixer.io)
* DKK - Danish Krone (ECB, via fixer.io)
* HKD - Hong Kong Dollar (ECB, via fixer.io)
* HRK - Croation Kuna (ECB, via fixer.io)
* HUF - Hungarian Forint (ECB, via fixer.io)
* IDR - Indonesian Rupiah (ECB, via fixer.io)
* ILS - Israeli Shekel (ECB, via fixer.io)
* INR - Indian Rupee (ECB, via fixer.io)
* KRW - South Korean Won (ECB, via fixer.io)
* MXN - Mexican Peso (ECB, via fixer.io)
* MYR - Malaysian Ringgit (ECB, via fixer.io)
* NOK - Norwegian Krone (ECB, via fixer.io)
* PHP - Philippine Peso (ECB, via fixer.io)
* PLN - Polish Zloty (ECB, via fixer.io)
* RON - Romanian New Leu (ECB, via fixer.io)
* SEK - Swedish Krona (ECB, via fixer.io)
* SGD - Singapore Dollar (ECB, via fixer.io)
* THB - Thai Baht (ECB, via fixer.io)
* TRY - Turkish Lira (ECB, via fixer.io)
* ZAR - South African Rand (ECB, via fixer.io)

... this is the result (beautified, tested via an instance in the browser):

<ul>
    <li>BTC - Bitcoin (Blockchain.info)</li>
    <li>USD - United States Dollar (ECB, via fixer.io)</li>
    <li>CAD - Canadian Dollar (ECB, via fixer.io)</li>
    <li>GBP - British Pound (ECB, via fixer.io)</li>
    <li>CNY - Chinese Yuan (ECB, via fixer.io)</li>
    <li>RUB - Russian Ruble (ECB, via fixer.io)</li>
    <li>JPY - Japanese Yen (ECB, via fixer.io)</li>
    <li>AUD - Australian Dollar (ECB, via fixer.io)</li>
    <li>
        <p>NZD - New Zealand Dollar (ECB, via fixer.io)</p>
    </li>
    <li>
        <p>BGN - Bulgarian Lev (ECB, via fixer.io)</p>
    </li>
    <li>BRL - Brazilian Real (ECB, via fixer.io)</li>
    <li>CHF - Swiss Franc (ECB, via fixer.io)</li>
    <li>CZK - Czech Koruna (ECB, via fixer.io)</li>
    <li>DKK - Danish Krone (ECB, via fixer.io)</li>Combining the two 
    <li>HKD - Hong Kong Dollar (ECB, via fixer.io)</li>
    <li>HRK - Croation Kuna (ECB, via fixer.io)</li>
    <li>HUF - Hungarian Forint (ECB, via fixer.io)</li>
    <li>IDR - Indonesian Rupiah (ECB, via fixer.io)</li>
    <li>ILS - Israeli Shekel (ECB, via fixer.io)</li>
    <li>INR - Indian Rupee (ECB, via fixer.io)</li>
    <li>KRW - South Korean Won (ECB, via fixer.io)</li>
    <li>MXN - Mexican Peso (ECB, via fixer.io)</li>
    <li>MYR - Malaysian Ringgit (ECB, via fixer.io)</li>
    <li>NOK - Norwegian Krone (ECB, via fixer.io)</li>
    <li>PHP - Philippine Peso (ECB, via fixer.io)</li>
    <li>PLN - Polish Zloty (ECB, via fixer.io)</li>
    <li>RON - Romanian New Leu (ECB, via fixer.io)</li>
    <li>SEK - Swedish Krona (ECB, via fixer.io)</li>
    <li>SGD - Singapore Dollar (ECB, via fixer.io)</li>
    <li>THB - Thai Baht (ECB, via fixer.io)</li>
    <li>TRY - Turkish Lira (ECB, via fixer.io)</li>
    <li>ZAR - South African Rand (ECB, via fixer.io)</li>
</ul>

Despite being syntactically valid - two separate lists, delimited by two newlines like any other 'element' in Markdown - strange paragraphs are inserted at the 'intersection' of the two; that is, the last element of the first paragraph, and the first element of the last paragraph.

Options for correct (that is, sensible and expected) behaviour would include:

  • Producing two separate <ul> elements, without any paragraphs in the list items.
  • Producing one combined <ul> element, effectively ignoring the double-newline, without any paragraphs in the list items.

GitHub itself appears to be having the same issue, but I'm not sure whether they use marked or a port of it (or even just an implementation based on the same rules). I've reported the issue to them separately.

@gscottolson
Copy link

@joepie91: Does the smartLists option yield the same result?

@joepie91
Copy link
Author

Yes, it seems to behave the same regardless of the smartLists setting.

@Feder1co5oave
Copy link
Contributor

You should put two empty lines (aka 3 newlines) in between the two blocks to get two separate lists with marked:

$ bin/marked
* BTC - Bitcoin (Blockchain.info)
* USD - United States Dollar (ECB, via fixer.io)
* CAD - Canadian Dollar (ECB, via fixer.io)
* GBP - British Pound (ECB, via fixer.io)
* CNY - Chinese Yuan (ECB, via fixer.io)
* RUB - Russian Ruble (ECB, via fixer.io)
* JPY - Japanese Yen (ECB, via fixer.io)
* AUD - Australian Dollar (ECB, via fixer.io)
* NZD - New Zealand Dollar (ECB, via fixer.io)


* BGN - Bulgarian Lev (ECB, via fixer.io)
* BRL - Brazilian Real (ECB, via fixer.io)
* CHF - Swiss Franc (ECB, via fixer.io)
* CZK - Czech Koruna (ECB, via fixer.io)
* DKK - Danish Krone (ECB, via fixer.io)
* HKD - Hong Kong Dollar (ECB, via fixer.io)
* HRK - Croation Kuna (ECB, via fixer.io)
* HUF - Hungarian Forint (ECB, via fixer.io)
* IDR - Indonesian Rupiah (ECB, via fixer.io)
* ILS - Israeli Shekel (ECB, via fixer.io)
* INR - Indian Rupee (ECB, via fixer.io)
* KRW - South Korean Won (ECB, via fixer.io)
* MXN - Mexican Peso (ECB, via fixer.io)
* MYR - Malaysian Ringgit (ECB, via fixer.io)
* NOK - Norwegian Krone (ECB, via fixer.io)
* PHP - Philippine Peso (ECB, via fixer.io)
* PLN - Polish Zloty (ECB, via fixer.io)
* RON - Romanian New Leu (ECB, via fixer.io)
* SEK - Swedish Krona (ECB, via fixer.io)
* SGD - Singapore Dollar (ECB, via fixer.io)
* THB - Thai Baht (ECB, via fixer.io)
* TRY - Turkish Lira (ECB, via fixer.io)
* ZAR - South African Rand (ECB, via fixer.io)
^D
<ul>
<li>BTC - Bitcoin (Blockchain.info)</li>
<li>USD - United States Dollar (ECB, via fixer.io)</li>
<li>CAD - Canadian Dollar (ECB, via fixer.io)</li>
<li>GBP - British Pound (ECB, via fixer.io)</li>
<li>CNY - Chinese Yuan (ECB, via fixer.io)</li>
<li>RUB - Russian Ruble (ECB, via fixer.io)</li>
<li>JPY - Japanese Yen (ECB, via fixer.io)</li>
<li>AUD - Australian Dollar (ECB, via fixer.io)</li>
<li>NZD - New Zealand Dollar (ECB, via fixer.io)</li>
</ul>
<ul>
<li>BGN - Bulgarian Lev (ECB, via fixer.io)</li>
<li>BRL - Brazilian Real (ECB, via fixer.io)</li>
<li>CHF - Swiss Franc (ECB, via fixer.io)</li>
<li>CZK - Czech Koruna (ECB, via fixer.io)</li>
<li>DKK - Danish Krone (ECB, via fixer.io)</li>
<li>HKD - Hong Kong Dollar (ECB, via fixer.io)</li>
<li>HRK - Croation Kuna (ECB, via fixer.io)</li>
<li>HUF - Hungarian Forint (ECB, via fixer.io)</li>
<li>IDR - Indonesian Rupiah (ECB, via fixer.io)</li>
<li>ILS - Israeli Shekel (ECB, via fixer.io)</li>
<li>INR - Indian Rupee (ECB, via fixer.io)</li>
<li>KRW - South Korean Won (ECB, via fixer.io)</li>
<li>MXN - Mexican Peso (ECB, via fixer.io)</li>
<li>MYR - Malaysian Ringgit (ECB, via fixer.io)</li>
<li>NOK - Norwegian Krone (ECB, via fixer.io)</li>
<li>PHP - Philippine Peso (ECB, via fixer.io)</li>
<li>PLN - Polish Zloty (ECB, via fixer.io)</li>
<li>RON - Romanian New Leu (ECB, via fixer.io)</li>
<li>SEK - Swedish Krona (ECB, via fixer.io)</li>
<li>SGD - Singapore Dollar (ECB, via fixer.io)</li>
<li>THB - Thai Baht (ECB, via fixer.io)</li>
<li>TRY - Turkish Lira (ECB, via fixer.io)</li>
<li>ZAR - South African Rand (ECB, via fixer.io)</li>
</ul>

Github doesn't use marked, nor a port of it.

@joshbruce
Copy link
Member

#982

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants