Editor de texto rico converte bbcode em matemática de exibição

Descrição

Ao colar bbcode no editor de texto rico, colchetes são escapados como \[ e \]. No entanto, isso torna um bloco de matemática de exibição válido, então ele é renderizado erroneamente como matemática.

Reprodução

  1. Copie o seguinte texto

    [details="summary"]
    some text
    [/details]
    
  2. Cole em algo como notepad.exe

  3. Copie do notepad.exe para remover as informações de formatação

  4. Cole no editor de texto rico

  5. O texto deve ser exibido como código; desmarque o botão de alternância “código” para torná-lo texto simples

Alternativamente, você pode digitar o bbcode mostrado acima manualmente no editor de texto rico.

Comportamento esperado

Ou

summary

some text

o que é bom, já que é o significado original do bbcode, ou

\[details=“summary”\]
some text
\[/details\]

o que também é bom, já que é o que você vê no editor wysiwyg.

Comportamento real

\[details=“summary”\]
some text
\[/details\]

o que não é bom.

2 curtidas

Não consegui reproduzir este problema. Tentei tanto no meu Macbook Pro quanto em um desktop Windows, onde consegui seguir suas instruções de reprodução textualmente.

Em ambos os casos, acessei o site usando o navegador web Firefox.

2 curtidas

Olá Mark,

Você consegue reproduzir digitando manualmente algum bbcode no editor de texto rico (ou seja, não colando nele)? A formatação da área de transferência é realmente uma questão complicada…

Se você tem pessoas colando bbcode, você pode tentar desabilitar discourse_math_enable_latex_delimiters.

Mas eu também não consigo reproduzir o problema. No meu caso, o que estava disponível na área de transferência era:

Formats: TIMESTAMP,TARGETS,SAVE_TARGETS,MULTIPLE,STRING,UTF8_STRING,TEXT,text/plain,text/plain;charset=utf-8,chromium/x-internal-source-rfh-token,chromium/x-source-url
'[details=\"summary\"]\\nsome text\\n[/details]'

ou a versão simples:

Formats: TARGETS,UTF8_STRING
'[details=\"summary\"]\\nsome plain text\\n[/details]\\n'

Usando copiar/colar do navegador (em vez do botão de copiar) eu tinha na minha área de transferência:

Formats: TIMESTAMP,TARGETS,SAVE_TARGETS,MULTIPLE,STRING,UTF8_STRING,TEXT,text/html,text/plain,text/plain;charset=utf-8,chromium/x-internal-source-rfh-token,chromium/x-source-url
UTF8_STRING:
b'[details=\"summary\"]\\nsome text\\n[/details]'
text/html:
b'\u003cspan style=\"color: rgb(199, 199, 199); font-family: \u0026quot;JetBrains Mono\u0026quot;, Consolas, Monaco, monospace; font-size: 15.75px; font-style: normal; font-variant-ligatures: none; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre; background-color: rgba(0, 0, 0, 0.25); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;\"\u003e[details=\"summary\"]\\nsome text\\n[/details]\u003c/span\u003e'
text/plain:
b'[details=\"summary\"]\\nsome text\\n[/details]'
text/plain;charset=utf-8:
b'[details=\"summary\"]\\nsome text\\n[/details]'

mas mesmo isso colou corretamente.

Sim, agora posso verificar esse comportamento simplesmente digitando no editor de Rich Text:

\[details=”summary”\]
Aqui estão os detalhes não tão escondidos.
\[/details\]

Dito isto, o editor rich fornece ferramentas para inserir esse tipo de coisa através de uma interface de apontar e clicar. Se você quer inserir detalhes ocultos, então eu acho que você deveria usar essa interface.

Vamos ver se funciona:

Summary

Este texto está realmente escondido!!

1 curtida

Parece que meu sistema injeta um <pre><code> para a área de transferência…

> arguments[0].clipboardData.getData('text/html')
'<pre><code class="lang-plaintext hljs language-plaintext" data-highlighted="yes">[details="summary"]
some text
[/details]
</code></pre>' 

De qualquer forma, o ponto principal é que o que você vê no editor wysiwyg não é o que você obtém.

Sim!

O que aconteceu na nossa instância foi que alguém forneceu um modelo para os outros preencherem; algo como…

[details="Parte 1"]
- [ ] verificar
- [ ] verificar
- [ ] verificar
[/details]
[details="Parte 2"]
- [ ] verificar
- [ ] verificar
- [ ] verificar
[/details]
...

… e então muitas pessoas voltaram (inesperadamente) com matemática de exibição como …

\[details=“Parte 1”\]

  • \[ \] verificar
  • \[x\] verificar
  • \[ \] verificar
    \[/details\]
    \[details=“Parte 2”\]
  • \[x\] verificar
  • \[ \] verificar
  • \[x\] verificar
    \[/details\]

Obrigado novamente pela sua atenção!

1 curtida