Markdown coincidente em conteúdo formatado colado no editor de rich text renderizado na publicação

Prioridade/Severidade:

Média

Plataforma:

Sistema Operacional

  • Windows 11

Navegador

  • Google Chrome 141.0.7390.123

Discourse

fb4bd7951aa6ae8c814df702807c12ccb77bd3fd

Descrição:

O [“editor de rich text”] (Introducing our new composer, making writing on Discourse easier than ever) destina-se a fornecer uma experiência “WYSIWYG”, onde o conteúdo visto no composer é renderizado exatamente como estará na postagem publicada.

O texto copiado de algumas fontes pode ser armazenado na área de transferência em um formato formatado (tipo text/html) além de texto puro (text/plain).

Quando o texto é colado no composer, se um tipo de dado formatado estiver presente na área de transferência, esses dados são usados em vez do tipo de texto puro.

Devido à natureza mínima da sintaxe, é comum que o texto contenha conteúdo que, coincidentemente, se assemelha à marcação Markdown.

:bug: A postagem publicada é renderizada de forma diferente do que é mostrado no “editor de rich text” quando o conteúdo formatado colado contém certa marcação Markdown coincidente.

Passos para reproduzir:

Marcação de lista coincidente

  1. Crie um arquivo HTML com o seguinte conteúdo:
    <html>
      <body>
    <br />- foo
      </body>
    </html>
    
  2. Abra o arquivo no seu navegador.
  3. Copie o conteúdo da página da web.
  4. Abra o composer de postagem.
  5. Coloque o composer no modo “editor de rich text”.
  6. Cole o conteúdo copiado no composer.
    :slightly_smiling_face: O texto foi colado literalmente, em vez de ser renderizado como uma lista:

    - foo

  7. Publique a postagem.

:bug: Em vez de corresponder ao que foi visto no composer, o conteúdo foi renderizado como uma lista não ordenada:

  • foo

Marcação de bloco de código coincidente

  1. Crie um arquivo HTML com o seguinte conteúdo:
    <html>
      <body>
        <span style="white-space: pre">    foo</span>
      </body>
    </html>
    
  2. Abra o arquivo no seu navegador.
  3. Copie o conteúdo da página da web.
  4. Abra o composer de postagem.
  5. Coloque o composer no modo “editor de rich text”.
  6. Cole o conteúdo copiado no composer.
    :slightly_smiling_face: O texto foi colado literalmente, em vez de ser renderizado como um bloco de código:
    foo
    
  7. Publique a postagem.

:bug: Em vez de corresponder ao que foi visto no composer, o conteúdo foi renderizado como um bloco de código:

foo

Marcação de bloco de código coincidente com BBCode coincidente

  1. Crie um arquivo HTML com o seguinte conteúdo:
    <html>
      <body>
        <span style="white-space: pre">    [foo]</span>
      </body>
    </html>
    
  2. Abra o arquivo no seu navegador.
  3. Copie o conteúdo da página da web.
  4. Abra o composer de postagem.
  5. Coloque o composer no modo “editor de rich text”.
  6. Cole o conteúdo copiado no composer.
    :slightly_smiling_face: O texto foi colado literalmente:
    [foo]
    
  7. Publique a postagem.

:bug: Em vez de corresponder ao que foi visto no composer, o conteúdo foi renderizado como um bloco de código, com barras invertidas precedendo os colchetes:

\[foo\]

Contexto adicional:

Acho correto que o editor de rich text ignore a marcação Markdown aparente presente no conteúdo colado que tenha o tipo “text/html”. Qualquer formatação intencional em tal conteúdo será definida por tags HTML, portanto, o conteúdo que se assemelha ao Markdown é mais provável de ser coincidente do que marcação real. Portanto, a falha aqui é que a sintaxe Markdown coincidente está sendo renderizada na publicação; não que ela não esteja sendo renderizada no composer.


Consigo reproduzir a falha em try.discourse.org no “modo seguro”.

1 curtida