The Final Markdown

Développement - le 18 Mars 2014 par Mathieu WEBER

J'étais sur le point de laisser tomber mon vieux parser de texte qui me sert à mettre en forme les posts de ce blog pour migrer vers un tinymce aux possibilités plus grandes, quand je suis allé faire un tour sur Coding Horror

Ce site c'est un peu une référence pour moi. Startuper et Philosophe du web, Jeff Atwood est le créateur de Stackoverflow et il a souvent des réflexions très pertinentes sur l'informatique et le développement.

A ma grande surprise, il n'a pas développé son blog mais il utilise Ghost Blogging. J'ai farfouillé un peu pour voir quelle type de mise en forme ce site proposait car les posts m'ont toujours paru très sobres et clairs.

Je vous le donne dans le mille, leur key feature c'est le MARKDOW ! C'est à dire la possibilité de taper du texte avec des * et des _ qui seront ensuite mis en forme automatiquement.

Un peu d'histoire

En creusant un peu, le Markdown (je suppose en référence au Hyper Text Markup Language aka HTML) est un langage de balisage léger créé par John Gruber. Il a été initialement développé en Perl, mais on trouve facilement des projets de portage en PHP.

La syntaxe est prévue pour être compréhensible, même si elle n'est pas interprétée. Par exemple:

# Header

- list item
- list item
- list item

**strong** ou _italic_ ou [lien web](http://example.com)

Mais surtout le gros avantage pour moi est que la syntaxe permet de faire facilement du formating directement au clavier. De façon plus efficace donc, surtout pour la prise de note. Ceci a aussi le gros avantage de laisser le soin de la mise en page au css et de donner un rendu propre et cohérent.

Il faut croire que le markdown a eu beaucoup de succès, car des sites comme Github l'utilisent. A tel point que c'est devenu une sorte de norme.

Et nous dans tout ça ?

A partir de là je n'avais pas beaucoup d'options. Comme j'ai la volonté un jour de releaser mon code source, ça ne servait à rien de réinventer mon propre language. J'ai donc opté pour la lib Parsedown que j'ai intégrée à mon framework. Bon j'ai pas pu m'empêcher de modifier un peu le code pour passer les classes en static histoire de gagner un peu en perf Ma seule déception, c'est que le language ne gère pas le underline :( Mais au final je gagne pas mal de possibilités par rapport à mon parser, surtout celle de formater du code source.

-- Mathdown