heldercorreia.pt

autodidata, programador e consultor

Markdown ou reStructuredText

Como mencionei no meu último post, estou a mudar este blog para o Pelican que é um gerador de sites estáticos escrito em Python. Tive que parar por uns meses devido a muito trabalho, casamento, mudança de casa e férias, mas ontem voltei à migração.

A minha ideia inicial era usar Markdown para escrever os artigos. Gosto de usar Markdown pela simplicidade da sua sintaxe. Uso este formato em vários sistemas (e.g. Github, outros wiki), inclusive variadas aplicações no Mac e iOS com suporte para este formato.

Quando comecei a fazer a importação dos artigos do Wordpress para o Markdown, não havia suporte para coisas como figuras com legendas ou forma simples de incluir vídeos youtube. O Markdown tem poucos elementos sendo que o resto deve ser feito com HTML. Porém eu prefiro ter uma sintaxe mais simples no ficheiro de texto e não ter que usar HTML diretamente se puder evitar.

O Markdown é um formato com implementação em várias linguagens. A implementação usada pelo Pelican é do Python e dá para extender, adicionando capacidades. Levei vários dias a tentar adicionar novas estruturas ao Markdown para por exemplo criar figuras com legendas, mas nunca ficava bem como queria. Estas extensões passam por analisar o texto com o uso de expressões regulares, que são difíceis de se fazer certo. Para além de que com a sua complexidade, estas expressões vão ficando menos legíveis e podem entrar em conflito com outros elementos com sintaxe semelhante, se não for bem feito.

Outro problema é a falta de standard no Markdown. De que valem os vários programas que tenho para pré-visualizar o texto em HTML se eles usam diferentes “sabores” entre si? Eu posso extender e inventar sintaxe à vontade, mas depois não aparece corretamente na pre-visualização.

Nas baterias incluídas do Python existe uma boa alternativa que vem nativamente com o Pelican. reStructuredText (reST) é um componente de parsing do módulo docutils e tem muito mais suporte para outros elementos, é standardizado (não há diferentes “sabores” de reST) e facilmente extensível, sem ter que depender de expressões regulares (e.g. através de directives).

Quando estive a tentar usar Markdown estava com Pelican 3.2 e Python 2.7 e não tinha ainda acabado a importação dos artigos por faltar substituir alguns elementos que uso no Wordpress. Fiz agora upgrade para Pelican 3.3 e Python 3.3, a usar reST, e em apenas algumas horas terminei a importação completa dos artigos sem ser preciso extender código.

Posso não ter pré-visualização no iOS (por enquanto), mas é o menor dos males. Pelo menos agora já posso continuar com o resto.

Comentários