Também disponível em: English · Español · Français · العربية
Gerador de tabelas Markdown
Preencha uma grelha e obtenha Markdown válido, com o escape das barras resolvido e o facto sobre tabelas que apanha toda a gente bem explicado.
O que é um gerador de tabelas Markdown
As tabelas em Markdown escrevem-se como linhas de texto separadas por barras verticais, com uma linha de traços por baixo do cabeçalho. Escrevê-las à mão corre bem com três colunas e é um suplício com oito, sobretudo quando se quer o código alinhado para continuar legível num editor.
Este dá-lhe uma grelha. Escreve nas células, acrescenta e remove linhas e colunas, define o alinhamento de cada coluna, e o Markdown actualiza-se à medida. Cole uma tabela existente na caixa em baixo e ela volta para a grelha para a poder editar.
Tudo corre no seu navegador. Nada é enviado e não há conta.
Como usar o gerador
- Preencha a grelha. Acrescente ou remova colunas e linhas com os botões acima. Cada cabeçalho de coluna tem quatro botões de alinhamento — por omissão, esquerda, centro e direita — que escrevem por si os dois pontos na linha de traços.
- Escolha o aspecto do código. As barras exteriores e o preenchimento das colunas são opcionais e nenhum muda a tabela desenhada; só afectam a legibilidade do Markdown num editor de texto.
- Copie-a, ou cole uma. O botão de copiar leva o Markdown. A caixa em baixo faz o inverso: cola uma tabela e ela é analisada de volta para a grelha, ou é-lhe dito porque não é uma tabela.
As tabelas não fazem parte do Markdown
Isto é o que vale a pena saber antes de colar uma tabela seja onde for, e demonstra-se em vez de se afirmar. O CommonMark — a especificação que a maioria dos processadores de Markdown implementa — não tem sintaxe nenhuma para tabelas. Nem uma versão limitada, nem outra sintaxe: nenhuma.
Este site já publica um motor CommonMark na sua página de Markdown para HTML, escolhido por acertar 649 dos 652 casos de teste da especificação. Dê a esse motor uma tabela perfeitamente vulgar e ele produz um parágrafo com barras verticais literais. Não há qualquer elemento de tabela na saída, porque para a especificação escreveu uma frase com alguma pontuação.
As tabelas vêm do GitHub Flavored Markdown, uma extensão que o GitHub definiu e documentou à parte. É por isso que o mesmo texto aparece como tabela num README, numa issue do GitHub e na maioria das ferramentas de documentação, e aparece como uma fila de barras em algo que implementa apenas a especificação base. Se alguma vez uma tabela que copiou apareceu como algaraviada, é essa a razão, e não é um erro do que escreveu.
As regras da extensão são precisas e esta ferramenta segue-as. A linha de traços é obrigatória: sem ela não há tabela. A linha de cabeçalho e a de traços têm de ter o mesmo número de células, e a especificação diz explicitamente que, se não tiverem, a tabela simplesmente não é reconhecida. As linhas do corpo podem variar: com menos células do que o cabeçalho são inseridas células vazias, com mais o excesso é descartado. O alinhamento é um sinal de dois pontos nos traços, à esquerda, à direita, ou dos dois lados para centrar. As barras no início e no fim são recomendadas por legibilidade mas não obrigatórias.
A que morde a sério é a barra vertical. Uma barra dentro de uma célula termina essa célula, por isso uma linha como «Salário | prémio» passa a duas colunas sem avisar e tudo o que vem a seguir desloca-se. A especificação diz para a escapar com uma barra invertida à frente, e esta ferramenta fá-lo em todas as células automaticamente. Vale a pena saber que os processadores variam no respeito por esse escape — o analisador com predefinição CommonMark daqui parte na mesma uma barra escapada —, por isso uma célula com uma barra é o mais provável que parta uma tabela que não tenha escrito.
Limitações assumidas
Uma célula não pode conter uma quebra de linha. A linha é a linha, por isso não há sintaxe para uma segunda linha dentro de uma célula, e escape nenhum a produz. O remendo habitual é um elemento de quebra HTML literal, que esta ferramenta oferece como opção em vez de o aplicar em silêncio, porque só aparece onde o destino aceita HTML em bruto, e muitas cadeias de Markdown removem-no.
As células só aceitam Markdown em linha. O negrito, o itálico, o código em linha e as ligações funcionam dentro de uma célula; os títulos, as listas, as citações e os blocos de código não, porque são construções de bloco e uma célula não é um bloco. Uma lista com marcas dentro de uma célula é coisa que as pessoas tentam e que não tem forma de se escrever em Markdown.
O preenchimento das colunas é cosmético. Alinhar o código torna o texto em bruto legível e não tem efeito nenhum no que um processador produz, por isso se a sua tabela for gerada ou muito larga, desligá-lo não lhe custa mais do que um diff arrumado. Torna o ficheiro maior, o que importa se estiver a editar à mão uma tabela de cinquenta linhas.
O analisador daqui aplica a regra de reconhecimento da especificação com rigor, o que significa que recusa coisas que um processador permissivo aceitaria. É deliberado: se a linha de traços não bater certo com o cabeçalho, a ferramenta di-lo em vez de adivinhar, porque um processador que adivinhe de outra maneira é precisamente de onde vêm as surpresas.
O motor leva 64 verificações, e a principal é uma ida e volta por um processador real e não uma tabela de cadeias esperadas: constrói-se uma tabela, desenha-se e verifica-se que as células que saem são as que entraram. Isso apanha ao mesmo tempo o escape, o preenchimento e a linha de traços. Uma sabotagem deliberada que deixou de escapar as barras fez com que a tabela construída deixasse de ser uma tabela, que é o argumento desta página demonstrado pelo seu próprio conjunto de testes.
Porque é gratuito
Juntar cadeias com barras verticais não é trabalho por que alguém deva pagar, e acontece na sua máquina. Nada é enviado, não há conta e não há nada para marcar de água.
Se o que tem é HTML e não uma grelha, o conversor de HTML para Markdown deste site transforma um elemento de tabela directamente nesta sintaxe, e a página de Markdown para HTML é o motor CommonMark descrito acima.