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

Problem with codeblocks following lists #100

Open
javipolo opened this issue Mar 12, 2024 · 9 comments
Open

Problem with codeblocks following lists #100

javipolo opened this issue Mar 12, 2024 · 9 comments

Comments

@javipolo
Copy link

javipolo commented Mar 12, 2024

If I add a list (it does not mind if it is numbered or not) and a code block just in the line after it, codeblock is not processed as such

version: mdless 2.1.42

Example file

- something
```
hello
```

As a bonus, if the code block contains an empty line at some point, mdless crashes:

Example files with empty line

- something
```

```

or

- something
```
hello

there
```

Example crash

#<Thread:0x00007f09490f2428 /home/myuser/.local/share/gem/ruby/gems/tty-spinner-0.9.3/lib/tty/spinner.rb:308 run> terminated with exception (report_on_exception is true):
/home/myuser/.local/share/gem/ruby/gems/mdless-2.1.42/lib/mdless/array.rb:5:in `longest_element': undefined method `last' for nil:NilClass (NoMethodError)

    group_by(&:size).max.last[0]
                        ^^^^^
        from /home/myuser/.local/share/gem/ruby/gems/mdless-2.1.42/lib/mdless/console.rb:69:in `hilite_code'
        from /home/myuser/.local/share/gem/ruby/gems/mdless-2.1.42/lib/mdless/console.rb:198:in `block_code'
        from /home/myuser/.local/share/gem/ruby/gems/mdless-2.1.42/lib/mdless/converter.rb:346:in `render'
        from /home/myuser/.local/share/gem/ruby/gems/mdless-2.1.42/lib/mdless/converter.rb:346:in `block (2 levels) in initialize'
        from /home/myuser/.local/share/gem/ruby/gems/tty-spinner-0.9.3/lib/tty/spinner.rb:225:in `execute_job'
        from /home/myuser/.local/share/gem/ruby/gems/tty-spinner-0.9.3/lib/tty/spinner.rb:308:in `block in run'
/home/myuser/.local/share/gem/ruby/gems/mdless-2.1.42/lib/mdless/array.rb:5:in `longest_element': undefined method `last' for nil:NilClass (NoMethodError)

    group_by(&:size).max.last[0]
                        ^^^^^
        from /home/myuser/.local/share/gem/ruby/gems/mdless-2.1.42/lib/mdless/console.rb:69:in `hilite_code'
        from /home/myuser/.local/share/gem/ruby/gems/mdless-2.1.42/lib/mdless/console.rb:198:in `block_code'
        from /home/myuser/.local/share/gem/ruby/gems/mdless-2.1.42/lib/mdless/converter.rb:346:in `render'
        from /home/myuser/.local/share/gem/ruby/gems/mdless-2.1.42/lib/mdless/converter.rb:346:in `block (2 levels) in initialize'
        from /home/myuser/.local/share/gem/ruby/gems/tty-spinner-0.9.3/lib/tty/spinner.rb:225:in `execute_job'
        from /home/myuser/.local/share/gem/ruby/gems/tty-spinner-0.9.3/lib/tty/spinner.rb:308:in `block in run'
@ttscoff
Copy link
Owner

ttscoff commented Mar 12, 2024 via email

@javipolo
Copy link
Author

Yeah, I discovered that the hard way :D

Anyway, other markdown tools work with that kind of syntax, which makes mdless not render properly markdown files that are written like that ...

But the scary thing is that mdless crashses on some conditions as explained above 😅

Example of that incorrect markdown rendering in github:

  • something
some code
  • other thing

@ttscoff
Copy link
Owner

ttscoff commented Mar 12, 2024 via email

@javipolo
Copy link
Author

I understand your point of view, but as a user, I want a tool I can use with files I did not produce. At least for me, it is the main use of mdless :)

However, the big concern is not that something is rendered incorrectly, but that the app crashes, and thus nothing is rendered

@ttscoff
Copy link
Owner

ttscoff commented Mar 12, 2024 via email

@ttscoff
Copy link
Owner

ttscoff commented Mar 12, 2024 via email

@javipolo
Copy link
Author

Here is how it looks when it does not render the code block properly, but the file is processed anyway:
image

And here is what happens when it crashes:
image

@cs-shadowbq
Copy link

This is unfortunate as I get the same exact error with very little ability to understand why the parsing is broken.

mdless index.md
[⠋] Processing index.md...#<Thread:0x00000001249961a8 /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/tty-spinner-0.9.3/lib/tty/spinner.rb:308 run> terminated with exception (report_on_exception is true):
[⠙] Processing index.md.../usr/local/Cellar/mdless/2.1.42_1/libexec/gems/mdless-2.1.42/lib/mdless/array.rb:5:in `longest_element': undefined method `last' for nil (NoMethodError)

    group_by(&:size).max.last[0]
                        ^^^^^
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/mdless-2.1.42/lib/mdless/console.rb:69:in `hilite_code'
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/mdless-2.1.42/lib/mdless/console.rb:198:in `block_code'
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/mdless-2.1.42/lib/mdless/converter.rb:346:in `render'
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/mdless-2.1.42/lib/mdless/converter.rb:346:in `block (2 levels) in initialize'
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/tty-spinner-0.9.3/lib/tty/spinner.rb:225:in `execute_job'
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/tty-spinner-0.9.3/lib/tty/spinner.rb:308:in `block in run'
/usr/local/Cellar/mdless/2.1.42_1/libexec/gems/mdless-2.1.42/lib/mdless/array.rb:5:in `longest_element': undefined method `last' for nil (NoMethodError)

    group_by(&:size).max.last[0]
                        ^^^^^
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/mdless-2.1.42/lib/mdless/console.rb:69:in `hilite_code'
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/mdless-2.1.42/lib/mdless/console.rb:198:in `block_code'
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/mdless-2.1.42/lib/mdless/converter.rb:346:in `render'
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/mdless-2.1.42/lib/mdless/converter.rb:346:in `block (2 levels) in initialize'
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/tty-spinner-0.9.3/lib/tty/spinner.rb:225:in `execute_job'
	from /usr/local/Cellar/mdless/2.1.42_1/libexec/gems/tty-spinner-0.9.3/lib/tty/spinner.rb:308:in `block in run'

The markdown is GHFM.

@ttscoff
Copy link
Owner

ttscoff commented Apr 29, 2024 via email

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

3 participants