Prioridade/Severidade:
Baixa Plataforma:
Chrome 124, Ubuntu 22 Versão:
Discourse v3.3.0.beta2-dev Descrição:
O Discourse realiza realce automático de código com hljs, mesmo quando nenhuma linguagem foi especificada. Este recurso funciona na visualização normal do tópico, mas não ao visualizar o código em tela cheia. Passos para reproduzir:
Crie um tópico com um bloco de código, sem especificar a linguagem
System.out.println("hello world");
Visualize o tópico e veja que o hljs detectou uma linguagem e aplicou o realce.
Clique no botão de tela cheia no canto superior direito do bloco de código.
Veja que a detecção de linguagem do hljs falhou e nenhum realce foi aplicado
Aqui estão algumas capturas de tela em uma única imagem grande, devido às restrições para novos usuários .
Obrigado pelo relatório, @oskar1, posso confirmar este bug localmente. (É mais difícil reproduzir isso no meta porque usamos text e não auto como default code lang no meta.)
Você tem o nome da classe lang-auto aplicado com código markdown e removido automaticamente aqui para que a biblioteca possa adivinhar o idioma.
No entanto, quando você entra em tela cheia, lang-auto não está mais no elemento, e você tem apenas o nome da classe language-<idioma-detectado-aqui>. Assim, lang é indefinido.
Uma possível correção poderia ser aqui – se lang-auto não for encontrado, procure por language-<...>.
const m = className.match(/^lang-(.+)$/);
→ const m = className.match(/^`(?:lang|language)-(.+)$/);