wtpython icon indicating copy to clipboard operation
wtpython copied to clipboard

Use Pygments to format <pre> blocks

Open briancohan opened this issue 4 years ago • 2 comments

Right now, in wtpython.formatters we have PythonCodeConverter which assumes all <pre> blocks are python code. This is certainly a good assumption given our code, but it's likely we'll encounter non-python code in a stackoverflow post.

Pygments appears to be able to guess a language from a code block.

https://pygments.org/docs/quickstart/#guessing-lexers https://pygments.org/docs/api/#pygments.lexers.guess_lexer

Suggest replacing PythonCodeConverter with a PygmentsCodeConverter that will try to detect a language. If there's an issue, then python should be a fallback.

briancohan avatar Aug 30 '21 00:08 briancohan

This shouldn't have to be guessed for every code block. The <pre> blocks should have classes like lang-java or lang-py which specify the language.

eniraa avatar Aug 30 '21 01:08 eniraa

This shouldn't have to be guessed for every code block. The <pre> blocks should have classes like lang-java or lang-py which specify the language.

I haven't looked at the markdown myself or the product of MarkdownConverter but you are correct, we don't have to guess if the language is specified in the markdown already. But when the language is not specified by the author of the question/answer, then we could use Pygments to guess it. I doubt we'll see much ruby or c++ or anything like that, but html/css/js could be in the question or answer.

briancohan avatar Aug 30 '21 01:08 briancohan