Un générateur de site statique qui casse des briques. VenC est tellement rapide qu'il enfreint le principe de causalité et produit de l'énergie surunitaire ! |
Les templates supportent la paramétrisation au moment de l'exécution de la commande --new-entry. C'est le cas par exemple du template oEmbed ou images.
Quand un template est appelé sans ses arguments, la création de la publication échoue.
Avant d'utiliser un template, il faut donc connaître ses arguments à l'aide de la commande --template-arguments.
Les paramètres de template prennent la forme de placeholder
Python, ceux qui sont utilisés avec la fonction format. Par exemple :
{moo} {foo} {bar}
Pour fonctionner il faut passer à VenC un troisième argument, au format JSON, qui portera les clés-valeurs nécessaires au template.
Le template oEmbed se présente ainsi :
authors:
categories:
title: {venc_entry_title}
---VENC-BEGIN-PREVIEW---
---VENC-END-PREVIEW---
.:GetEmbedContent::{embed_content}:.
Dans ce template, on voit que l'on a deux placeholders :
venc_entry_title : variable optionnelle, voir "Arguments par défaut".embed_content : qui est utilisée ici en paramètre de GetEmbedContent.Pour créer une publication avec le template oEmbed il faudrait donc utiliser la commande VenC --new-entry, comme ci-dessous :
venc --new-entry \ "Des images stylées, comme l'histoire de France" \ oEmbed \ '{"embed_content":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'
Le template images se présente ainsi :
authors:
categories:
title: {venc_entry_title}
images: {images}
---VENC-BEGIN-PREVIEW---
---VENC-END-PREVIEW---
.:ForEntryMetadata::images::<img src="{value}" title="" alt="{value}">:: :.
Dans ce template on voit que l'on a trois placeholders :
venc_entry_title : variable optionnelle, voir "Arguments par défaut".value : optionnelle, voir "Arguments par défaut".images : ce placeholder est présent dans l'entête de la publication.
Ça signifie que les valeurs ou les structures de données associées à la clé images, dans le code JSON passé en argument, seront ajoutées à
l'entête YAML.Comme la métadonnée d'origine dans l'entête YAML du template est appelée dans ForEntryMetadata, il faut que la variable images soit une liste. On doit donc utiliser la commande VenC --new-entry comme ci-dessous :
Pour plus de clarté l'exemple utilise une approche multiligne en Bash, comme expliqué ici.
JSON=$(cat <<-END { "images" : [ "https://i.kym-cdn.com/photos/images/newsfeed/000/247/207/813.gif", "https://i.kym-cdn.com/photos/images/newsfeed/001/390/627/208.jpg" ] } END ) venc --new-entry \ "Des images stylées, comme l'histoire de France" \ images \ "$JSON"