Estou no processo de modificar algumas das funcionalidades com markdown no Discourse para melhor atender às necessidades da minha comunidade, que está vindo de um fórum myBB.
O Discourse é minha primeira exposição ao markdown, e quero adotar a abordagem de “não derrube uma cerca se você não sabe por que ela está lá”. No entanto, estou tendo dificuldade em descobrir por que o markdown realiza certas ações e adoraria alguns recursos para me ajudar a entender (especialmente se houver algumas preocupações de segurança que eu possa estar ignorando).
A resposta neste tópico forneceu algumas referências gerais boas, incluindo discussões iniciais e um plugin (agora inativo):
E esta postagem tem sido incrivelmente útil no lado do desenvolvimento:
Mas, novamente, estou procurando entender por que certos recursos existem - para que eu possa avaliar melhor a remoção ou o ajuste deles.
Os recursos atuais que estou analisando são:
Remover quebras de linha consecutivas sem <br> ou outro código.
Criação automática de blocos de código em linhas com 4 ou mais espaços iniciais.
Remover espaços em branco iniciais em uma nova linha.
Transformar qualquer sequência de números em uma lista numerada em ordem crescente consecutiva.
Estou muito interessado neste tópico, mas não tenho conhecimento para responder à maioria das suas perguntas.
No entanto,
Acho que o Discourse quer manter as postagens limpas e fáceis de ler.
Ao remover quebras de linha extras e cortar espaços no início das linhas, ele garante que as postagens pareçam consistentes.
Isso ajuda especialmente quando os usuários, às vezes até sem perceber (conheço alguns!), adicionam espaços ou linhas aleatórias que podem tornar o conteúdo mais difícil de ler.
Pode parecer estranho forçar isso, especialmente quando você realmente quer uma lacuna em sua lista, mas minha suposição é que seja para manter as listas numeradas o mais simples possível, sem a necessidade de renumerar cada elemento ao adicionar um novo à sua postagem (ou em uma postagem wiki).
Na verdade, manter tudo muito apertado pode tornar as coisas mais difíceis de ler. Um parágrafo após uma imagem pode ser um exemplo.
Mas… estou usando <br />, então não há problema algum.
Outro porém… tenho bastante certeza de que a operação de limpeza não tem nada a ver com uma experiência de leitura mais limpa. Vem do próprio código. Algo semelhante à afirmação muito cansada de que o markdown é mais fácil de ler em “nível de código”. O usuário final nunca está nessa situação.
Bem. Isso é puro meta agora.
Mas me recuso a acreditar que limpar linhas e espaços extras realmente melhora a experiência geral para o usuário final.
Não tenho certeza se isso resolverá um problema para você, mas o Discourse tem uma configuração de site traditional markdown linebreaks que está desativada por padrão. Quando ativada, são necessários dois espaços no final para criar uma quebra de linha.
Aqui está um exemplo com essa configuração ativada:
Vale a pena dar uma olhada nesta página e tentar o tutorial de markdown de 10 minutos: Markdown Reference. O tutorial para novos usuários do Discourse vincula a essa página, mas provavelmente é ignorado por muitos usuários que fazem o tutorial:
Eu realmente aprecio a visão. Minha comunidade tem uma grande subcomunidade de jogos de fórum/contadores de histórias onde a liberdade de formatação tende a valer mais do que a consistência. Se a razão principal para esses recursos é realmente ajudar a manter uma aparência consistente e simplificada, provavelmente é seguro removê-los para o meu caso de uso, ou pelo menos dar a eles uma opção selecionável pelo usuário.
Este é um tutorial muito útil, e sua ênfase em “criar textos bonitos” parece seguir as ideias de consistência mencionadas anteriormente. Obrigado por apontá-lo.
Ao fazer leituras adicionais sobre markdown, achei este site particularmente esclarecedor.
Esta é, eu acho, a descrição original do markdown, conforme citado pela equipe do commonmark, e revela que um elemento central do porquê o markdown faz o que faz se deve à sua proximidade com o html.
Por exemplo, a primeira frase lá é:
Markdown é uma ferramenta de conversão de texto para HTML para escritores da web.
E eu acho que algumas dessas peculiaridades do markdown podem ser menos devido às suas propriedades organizacionais e mais a um desejo de converter o texto de forma limpa para o código html correspondente.
Isso explica por que o espaço em branco é cortado, porque o html corta seu espaço em branco.
Também a razão para transformar qualquer sequência de números em uma lista numerada crescente se torna um pouco mais clara com:
Portanto, o markdown nem se preocupa em olhar para os números, porque listas ordenadas em html não se preocupam em atribuir números. (O código real em markdown-it verifica o caractere na primeira posição, mas apenas para iniciar a numeração a partir desse caractere).
Acho que pode haver mais do que isso, (como consistência de formatação em vários dispositivos), mas alguns dos aspectos mais peculiares parecem muito inspirados em html.