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 ! |
Ces motifs permettent d'accéder à des métadonnées contenues dans une publication. Ils ne peuvent donc pas être utilisés en dehors d'une publication ou des fichiers ci-dessous composant un thème :
.:CherryPickEntryMetadata::branch_1[::branch_2::branch_n]:.
Permet de récupérer le contenu de la métadonnée contenue dans un ou plusieurs dictionnaires. Pour ce faire, cette fonction prend au moins un paramètre qui désigne le nom d'un champ à la racine du document YAML d'une publication.
Par exemple :
.:CherryPickEntryMetadata::moo::foo::bar:.
Identique à CherryPickEntryMetadata
, mais est ignoré en cas
d'erreur.
.:ForEntryAuthors::string::separator:.
Retourne la liste des auteurs de la publication.
Le premier argument est une chaîne de caractères à formater avec les variables :
value
: contient le nom de l'auteur courant.html_id
: le nom de l'auteur courant, mais formaté pour être utilisé comme un identifiant HTML.Le second paramètre est une chaîne de caractères servant de séparateur.
.:ForEntryMetadata::metadata_name::string::separator:.
Il est possible de définir des métadonnées sous la forme de listes.
Le premier argument est une chaîne de caractères à formater avec les variables :
value
: contient l'élément courant de la liste.html_id
: le nom de la catégorie courante, mais formaté pour être utilisé comme un identifiant HTML.Le second paramètre est une chaîne de caractères servant de séparateur.
Si la métadonnée spécifiée dans metadata_name
n'existe pas, VenC interrompra la génération du site.
.:ForEntryMetadataIfExists::metadata_name::string::separator:.
Identique à ForEntryMetadata
, mais
est ignoré si la métadonnée spécifiée dans metadata_name
n'existe pas.
.:GetEntryArchivePath:.
Retourne le liens vers le groupe d'archives dans lequel se trouve la publication.
.:GetEntryCategoriesTree::open_node::open_branch::close_branch::close_node:.
Les catégories de la publication sont organisées sous la forme d'un arbre. Il est possible de récupérer l'arbre entier afin, typiquement, de générer un menu ou une liste de catégories et de sous-catégories.
Les arguments du motif sont les suivants :
open_node
: contient la chaîne de caractères d'ouverture pour la catégorie parente.open_branch
: contient la chaîne de caractères d'ouverture de la catégorie courante.close_branch
: contient la chaîne de caractères de fermeture de la catégorie courante.close_node
: contient la chaîne de caractères de fermeture de la catégorie parente.Les variables de ce motif sont les suivantes :
value
: le nom de la catégorie courante.html_id
: le nom de la catégorie courante, mais formaté pour être utilisé comme un identifiant HTML.path
: le chemin relatif de la catégorie courante.count
: le nombre de publications dans la catégorie courante.weight
: le nombre de publications dans la catégorie courante, divisé par le nombre de publications appartenant à une catégorie.childs
: contient le résultat de la récursion suivante du motif.Par exemple, pour créer un menu déroulant on peut utiliser le motif comme ci-dessous :
.:GetEntryCategoriesTree:: <ul>:: <li><a href="{path}" title="{count} publications">{value}</a>:: {childs}</li>:: </ul> :.
Si la publication était incluse dans les catégories suivantes :
categories: - Material: - Metal: - Copper - Steel - Science
Alors le motif générerait quelque chose comme le code HTML suivant :
<ul> <li> <a href="../Material/" title="1 publications">Material</a> <ul> <li> <a href="../Material/Metal/" title="1 publications">Metal</a> <ul> <li><a href="../Material/Metal/Copper/" title="1 publications">Copper</a></li> <li><a href="../Material-Metal/Steel/" title="1 publications">Steel</a></li> </ul> </li> </ul> </li> <li> <a href="../Science/" title="1 publications">Science</a> </li> </ul>
À la fin de chaque branche, si la catégorie courante possède une ou plusieurs
catégories filles, alors les arguments open_node
et close_node
sont ajoutés et
une nouvelle liste de sous-catégories est générée entre ces deux arguments,
en utilisant les arguments open_branch
et close_branch
.
Ce motif est ignoré et supprimé si la génération des catégories est désactivée dans le fichier de configuration principale.
.:GetEntryCategoriesTreeFromBranches:: branches:: sub_tree_separator:: open_node:: open_branch:: close_branch:: close_node :.
Fonctionne comme GetBlogCategoriesTreeFromBranches
mais
ne garde que les catégories où se trouve la publication courante.
.:GetEntryChapterLevel:.
Renvoie le niveau du chapitre de la publication.
Par exemple si la publication correspond au chapitre '1.2.3'
, alors le motif renverrait 3
:
chapter: '1.2.3'
Si la publication correspond au chapitre '4.5'
, alors le motif renverrait 2
:
chapter: '4.5'
.:GetEntryChapterPath:.
Renvoie le chemin relatif du chapitre correspondant à la publication courante.
.:GetEntryDate[::format]:.
Retourne la date de la publication formatée comme définie dans le fichier de configuration par le champ date_format
.
Il est possible d'utiliser un autre format de date à l'aide de l'argument optionnel format
.
Pour en savoir plus sur ce format, rendez-vous ici.
.:GetEntryDay:.
Retourne le jour de création de la publication.
.:GetEntryHour:.
Retourne l'heure de création de la publication.
.:GetEntryID:.
Retourne l'identifiant unique de la publication.
.:GetEntryMetadata::metadata_name:.
Il est possible de définir ses propres champs dans les métadonnées d'une publication ou d'un template.
Par exemple, si l'on définit le champ suivant :
free_hardware : Arduino Mega
Pour accéder à celui-ci, on utilisera le motif GetEntryMetadata
de la façon suivante :
.:GetEntryMetadata::free_hardware:.
Si la métadonnée ainsi référencée n'existe pas, VenC générera une erreur et stoppera la génération du site.
.:GetEntryMetadataIfExists::metadata_name[::string][::string2]:.
De façon similaire, il est possible d'essayer d'accéder à une métadonnée, sans garantie que celle-ci existe. Si la métadonnée existe, il est possible alors de formater du texte pour l'y inclure.
Les arguments de ce pattern sont au nombre de trois :
metadata_name
: le nom de la métadonnée désirée.string
: le texte formaté retourné si la condition est remplie. Optionnel. Si cet argument n'est pas présent, la fonction renvoie la valeur de la métadonnée sans formatage.string2
: le texte non formaté retourné si la condition n'est pas remplie. Si cet argument n'est pas présent, le pattern est ignoré.Il est possible d'utiliser la variable suivante dans l'argument string
pour formater le texte :
value
: contient la valeur de la métadonnée qu'on référence..:GetEntryMetadataIfNotNull::metadata_name[::string][::string2]:.
Identique à GetEntryMetadataIfExists
, mais la métadonnée spécifiée ne doit pas être vide ou être null
.
Par exemple:
<div id="entry.:GetEntryID:." .:GetEntryMetadataIfExists::alternate_style::class="{value}":. >
Si la métadonnée référencée n'est pas définie, si elle est vide ou null
, VenC retourne string2
(si cette chaîne est définie), sinon le motif est ignoré.
Si le second argument n'est pas défini, l'accesseur renvoie directement la variable référencée, si le test réussit.
.:GetEntryMetadataTree:: metadata_name:: open_node:: open_branch:: value_childs:: value:: close_branch:: close_node :.
Ce pattern permet de formater sous la forme d'un arbre une métadonnée d'une publication qui serait une structure de données.
Les arguments de ce motif sont les suivants :
metadata_name
: le nom de la métadonnée à laquelle on souhaite accéder. Si elle n'existe pas, VenC lève une exception.open_node
: la chaîne de caractères ouvrant la liste courante.open_branch
: la chaîne de caractères ouvrant l'item courant.value_childs
: la chaîne de caractères composant l'item courant, si celui-ci a des items enfants.value
: la chaîne de caractères composant l'item courant, si celui-ci n'a pas d'item enfant.close_branch
: la chaîne de caractères fermant l'item courant.clode_node
: la chaîne de caractères fermant la liste courante.Ce motif possède les variables suivantes :
value
: contient la valeur de l'item courant. Vous pouvez utiliser cette variable dans les arguments value
et value_childs
.html_id
: le nom de la métadonnée courante, mais formaté pour être utilisé comme un identifiant HTML.childs
: contient le bloc enfant de l'item courant. Vous ne pouvez utiliser cette variable que dans l'argument value_childs
.Voici un exemple d'utilisation de ce pattern. Étant donné la métadonnée suivante dans l'entête d'une publication :
tree_test: - a: - b: - c - d - e: - f - g
Si l'on veut afficher tree_test
sous la forme de listes imbriquées on pourrait utiliser le motif comme suit :
.:GetEntryMetadataTree:: tree_test:: <ul>:: <li>:: {value} {childs}:: {value}:: </li>:: </ul> :.
Ce qui donnerait :
.:GetEntryMetadataTreeIfExists:: metadata_name:: open_node:: open_branch:: value_childs:: value:: close_branch:: close_node :.
Identique à GetEntryMetadataTree
, mais le pattern
est ignoré si la métadonnée indiquée n'existe pas.
.:GetEntryMinute:.
Retourne la minute de création de la publication.
.:GetEntryMonth:.
Retourne le mois de création de la publication.
.:GetEntryPath:.
Retourne le chemin relatif de la publication si VenC est configuré pour générer une page par publication. Sinon, le motif est ignoré et supprimé.
.:GetEntryTitle:.
Retourne le titre de la publication.
.:GetEntryToC::open_ul::open_li::content::close_li::close_ul:.
Ce motif permet de générer une table des matières multiniveaux sur la base des titres présents dans le corps d'une publication Markdown.
open_ul
: la chaîne de caractères ouvrant le niveau courant.open_li
: la chaîne de caractères ouvrant l'item courant.content
: la chaîne de caractères composant l'item courant, dans laquelle vous pouvez utiliser les variables du motif.close_li
: la chaîne de caractères fermant l'item courant.clode_ul
: la chaîne de caractères fermant le niveau courant.Le motif a quelques variables qu'il est possible d'utiliser dans l'argument content
:
id
: contient l'id
HTML de l'entête correspondant à l'item courant.title
: contient le titre de l'entête correspondant à l'item courant.level
: contient le niveau de l'entête correspondant à l'item courant.Un usage classique ressemblerait à quelque chose comme :
.:GetEntryToC:: <ul>:: <li>:: <a href="#{id}" class="toc_level_{level}">{title}</a>:: </li>:: </ul> :.
Si dans la publication on trouvait les titres suivants :
# Title 1 ## Title 1.1 ### Title 1.1.1 ## Title 1.2
Alors le code HTML généré ressemblerait à :
<ul> <li> <a href="#title-1" class="toc_level_1">Title 1</a> <ul> <li> <a href="#title-1-1" class="toc_level_2">Title 1.1</a> <ul> <li> <a href="#title-1-1-1" class="toc_level_3">Title 1.1.1</a> </li> </ul> </li> <li> <a href="#title-1-2" class="toc_level_2">Title 1.2</a> </li> </ul> </li> </ul>
Ce qui donne :
Quelques remarques :
</p>
et <p>
, respectivement au début et à la fin du texte de sortie.entry.html
ou bien directement dans votre publication..:GetEntryYear:.
Retourne l'année de création de la publication.
.:GetFlattenedEntryCategories::string::separator:.
Permet de récupérer sous la forme d'une liste chaque item de l'arbre des catégories d'une publication.
Si la génération des fils de publications triés par catégorie est désactivée, ce motif est ignoré.
Les arguments de ce motif sont :
string
: la chaîne de caractères correspondant à l'item courant.separator
: la chaîne de caractères qui sert de séparateur entre chaque item.Dans l'argument string
vous pouvez utiliser les variables suivantes :
value
: le nom de la catégorie courante.html_id
: le nom de la catégorie courante, mais formaté pour être utilisé comme un identifiant HTML.count
: le nombre de publications dans cette catégorie.weight
: le nombre de publications dans cette catégorie, divisé par le nombre de publications ayant une catégorie.path
: le chemin relatif menant au fil de publication de la catégorie courante..:GetFlattenedBlogCategoriesFromBranches:: branches:: sub_tree_string:: sub_tree_separator:: string:: separator :.
Identique à GetFlattenedBlogCategoriesFromBranches
mais ne récupère que les catégories de la publication courante.
.:IfEntryMetadataIsTrue::metadata_name::if_true[::if_false]:.
Permet d'afficher un texte ou un autre selon que la métadonnée indiquée est vraie ou fausse.
Ce motif possède les arguments suivants :
metadata_name
: le nom de la métadonnée qu'on teste. Le test de vérité est pythonic, c'est-à-dire que pour échouer la métadonnée ne doit pas exister ou doit être explicitement le booléen False
.if_true
: le texte à retourner si le test réussit.if_false
: optionnel. Le texte à retourner si le test échoue.