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

markdown: some lines are lost in verbatim blocks inside a list #2507

Open
xymus opened this issue Jun 20, 2017 · 0 comments
Open

markdown: some lines are lost in verbatim blocks inside a list #2507

xymus opened this issue Jun 20, 2017 · 0 comments
Labels

Comments

@xymus
Copy link
Contributor

xymus commented Jun 20, 2017

The markdown module loses some lines from verbatim blocks inside list items. As far as I can tell, it happens only when the number of non-whitespace characters in the line is equal to the indentation level.

For example, if the indentation uses 4 spaces, 4 letter lines are cut:

*   4 spaces, `asdf` and `tab.` are lost
    ~~~
    a
    as
    asd
    asdf
	tab.
    asdfg
    ~~~

And the nitmd output, notice the blank lines:

<ul>
<li><p>4 spaces, <code>asdf</code> and <code>tab.</code> are lost</p>
<pre><code>a
as
asd


asdfg
</code></pre>
</li>
</ul>

The same thing happens with a 2 spaces indentation:

* 2 spaces, `as` is lost

  ~~~
  a
  as
  asd
  asdf
  ~~~

And the nitmd output:

<ul>
<li><p>2 spaces, <code>as</code> is lost</p>
<pre><code>a

asd
asdf
</code></pre>
</li>
</ul>

I get this behavior with nitmd and when using the markdown module directly.

@xymus xymus added the bug label Jun 20, 2017
privat added a commit that referenced this issue Jun 26, 2018
This PR introduces a new Markdown engine called `markdown2`.

The current Markdown implementation is functional but does not follows the [CommonMark](http://commonmark.org/) specification as it passes only 273 tests of the 627 from the [CommonMark test suite](https://github.com/CommonMark/CommonMark).

Also there is a few issues with it as stated in #791, #1394, #1525 and #2507.

This new implementation aims at resolving these issues and follow the CommonMark specification.

Features:
* Markdown AST creation and rendering
* Rendering to HTML
* Rendering to Markdown
* Rendering to Man format
* Rendering to LaTeX
* Parsing of Github extended mode
* Parsing of wikilinks
* Parsing of LaTeX/Maths expression (upcoming in next PR)
* Respect of the CommonMark specification with only 10 tests failed (UTF-8 related)
* Extensive testing with a total of 980 test units...

I didn't remove the old markdown implementation since the benchmarks are not really good for now. Since `markdown2` uses a lot of regular expressions, performances can be an issue compared to `markdown`:

![screenshot from 2018-06-20 19 21 08](https://user-images.githubusercontent.com/583144/41689548-1a8bc5d0-74bf-11e8-899e-52b0eb093d57.png)

In the following PR some Nit tools will be migrated to the new implementation:
* nitunit
* nitiwiki
* nitdoc
* nitweb

Pull-Request: #2720
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant