Filtrer les expressions régulières dans Jekyll
Table des matières

Filtrer les expressions régulières dans Jekyll

Jekyll est un générateur de site web statique.

Il permet, par exemple, de transformer vos fichiers écrits avec Markdown en un blog.

Un de ses avantages est de pouvoir étendre les fonctionnalités de bases.

Dans cet article, je vais vous partager un plugin que j’ai trouvé pour gérer les expressions régulières.

Contexte

Par défaut, Jekyll offre de nombreux filtres : https://shopify.github.io/liquid/filters/

Il est possible de :

  • Calculer la valeur absolue d’une valeur numérique : abs
  • Transformer la première lettre d’une phrase en majuscule : capitalize
  • Encoder une chaîne de caractères dans une URL : url_encode

Besoin

Les filtres disponibles par défaut permettent de gérer la majorité des cas.

Cependant, j’ai rapidement eu besoin de gérer les chaînes de caractères plus complexes.

Les expressions régulières étaient alors nécessaires, mais non disponibles de base.

Il faut donc étendre les fonctionnalités offertes par Jekyll.

Plugin

Il est possible d’ajouter des plugins personnels facilement.

Pour cela, il suffit d’ajouter un peu de code Ruby dans le répertoire _plugins.

Dans notre cas, le fichier _plugins/regex-filter.rb contient le code ci-dessous :

module Jekyll
  module RegexFilter
    def replace_regex(input, reg_str, repl_str)
      re = Regexp.new reg_str

      # This will be returned
      input.gsub re, repl_str
    end
  end
end

Liquid::Template.register_filter(Jekyll::RegexFilter)

Ce code a été trouvé sur le forum stackoverflow : Jekyll filter for regex substitution in content?

Je ne suis pas un expert en Ruby, mais il est facilement compréhensible que ce code remplace l’expression régulière passée en paramètre par la dernière valeur de la fonction.

Utilisation

Pour activer ce filtre, il faut utiliser le nom de la fonction comme filtre.

Par exemple, le code ci-dessous supprimera le préfixe http:// ou https:// :

{{ url | replace_regex: "^https?://", "" }}

Il vous suffit maintenant de créer le fichier _plugins/regex-filter.rb et d’utiliser le filtre pour gérer les expressions régulières.