~bohwaz/blog/

Avec de vrais morceaux de 2.0 !

SkrivLite, une implémentation légère de SkrivML

SkrivML est un langage de markup inspiré des syntaxes de MediaWiki, Creole, MarkDown, reST, txt2tags, AsciiDoc et d'autres. C'est à mon sens une syntaxe plus intuitive et simple que l'horreur qu'est MarkDown par exemple. Je n'ai donc pas hésité longtemps avant de l'adopter. Le seul problème était son implémentation relativement complexe et éparpillée, avec 350 Ko de code réparti en plus de 60 fichiers.

Comme j'ai l'habitude de faire des petits outils intégrés en un seul fichier à recopier, et de manière générale je trouve cela inélégant d'avoir plus de code pour une bibliothèque externe que pour le projet principal, donc je me suis attelé à réaliser une nouvelle implémentation de SkrivML.

Voici donc SkrivLite : une implémentation légère, en un seul fichier et 25 Ko de code, sans aucune autre dépendance. Elle est deux à trois fois plus économe en mémoire et plus rapide que l'implémentation officielle. Elle est intégralement compatible avec la syntaxe SkrivML, sauf qu'elle ne gère pas les transformations de smileys et symboles (fonctionnalité que je trouve relativement inutile).

Elle ajoute également quelques fonctionnalités :

  • Filtrage des liens sortants pour éviter les attaques XSS
  • Possibilité d'autoriser le HTML en plus du code Skriv (il est alors conseillé de filtrer le HTML, par exemple avec Garbage2xhtml)
  • Paramètres nommés dans les extensions. Dans la syntaxe Skriv originelle les paramètres des extensions sont écrits ainsi : <<lipsum|5|2>>, mais dans SkrivLite il est aussi possible d'utiliser les paramètres nommés comme ceci : <<lipsum paragraphs="5" words=2>>

SkrivLite est disponible sous licence BSD 2 clauses : télécharger le code source.

Écrire un commentaire
(facultatif)
(facultatif)
(obligatoire)
     _ _ _                             
 ___(_) | | ___  _ __  _ __   ___ _ __ 
/ __| | | |/ _ \| '_ \| '_ \ / _ \ '__|
\__ \ | | | (_) | | | | | | |  __/ |   
|___/_|_|_|\___/|_| |_|_| |_|\___|_|   
                                       
(obligatoire)

Les adresses internet seront converties automatiquement.
Tags autorisés : <blockquote> <cite> <pre> <code> <var> <strong> <em> <del> <ins> <kbd> <samp> <abbr>