O que um removedor de Markdown joga fora, e como manter
“Remover o Markdown” soa como uma única operação. Na verdade é uma série de pequenas decisões, e um conversor toma cada uma delas por você, admitindo ou não.
Aqui está o que costuma ser decidido mal.
A numeração de listas
A mais consequente. As bibliotecas comuns tratam uma lista como uma construção de formatação
e a achatam, o que remove 1. 2. 3. junto com os caracteres de marcador.
Para uma lista com marcadores isso é discutivelmente aceitável. Para uma numerada, destrói o sentido: os números se referiam a alguma coisa. Respostas a um questionário numerado, passos de uma sequência, itens classificados — tudo vira um monte sem ordem.
Aqui a numeração é mantida, inclusive listas que começam em 7 e uma lista numerada aninhada dentro de outra.
O URL por trás de um link
[a documentação](https://example.com/guia) tem duas informações. Texto simples não tem onde
colocar a segunda, então um conversor precisa ou escrevê-la ou descartá-la.
Descartar é silencioso e comum. Quem lê recebe “a documentação” e nenhuma forma de chegar
lá. O padrão aqui escreve as duas — a documentação (https://example.com/guia) — porque quem
não consegue seguir o link perdeu algo. Só texto e só URL ficam disponíveis quando você sabe
que o link não importa.
A linguagem de um bloco de código
Um bloco marcado ```java carrega um fato: isto é Java. Remova a marcação e esse
fato vai junto, deixando um bloco de símbolos sem explicação que poderia ser qualquer coisa.
A linguagem é emitida como rótulo — [java] — para quem lê saber. Desligado, ou mantido como
a marcação original, se você preferir.
O texto alternativo de uma imagem
Uma imagem não sobrevive como imagem. Mas o texto alternativo dela é uma frase que alguém escreveu para descrevê-la, e muitas vezes é a única descrição daquele conteúdo no documento. Descartar a imagem e manter a descrição costuma ser melhor do que descartar as duas.
Notas de rodapé, citações, divisores, frontmatter
Cada um é conteúdo que um removedor pode eliminar caladamente. Cada um é mantido por padrão aqui e desligável individualmente.
Por que sem perdas é o padrão certo
O teste que resolve a maioria desses casos: alguém que nunca viu a entrada conseguiria entender tudo o que ela dizia, apenas pela saída?
Se a resposta é não, o conversor jogou fora informação em nome de quem lê sem perguntar. Um conversor que deixa algo que você precisa apagar é irritante por dez segundos. Um que apaga algo de que você precisava é um problema que talvez você só note quando importar.
Então os padrões mantêm tudo, e cada remoção é uma chave que você escolhe. Uma predefinição — Relatório e tabelas — quebra essa regra de propósito e remove blocos de código e imagens, porque existe para levar uma tabela comparativa a um relatório onde um trecho solto é ruído. É a exceção, ela diz isso, e a predefinição Padrão não remove absolutamente nada.
As coisas que realmente não têm resposta
Algumas decisões não têm um padrão correto, apenas um contexto:
- Como é um título quando nada pode torná-lo um título? Simples, maiúsculo, ou com o
#mantido. - Como é uma tabela sem tabela? Colunas alinhadas, tabulações, ou rótulo e valor.
- Como é uma lista de tarefas?
[ ],☐, ou nada.
É para isso que as predefinições existem. Em vez de escolher uma e chamá-la de universal, cada predefinição responde a todas essas perguntas para um destino específico — um cliente de e-mail, uma planilha, uma janela de chat, uma página de documentação, um formulário web — e mostra um exemplo para você ver as respostas antes de confiar nelas.