Créer des documents différents à partir des mêmes sources via Jinja
Profilez du contenu reStructuredText avec Jinja et Python en prétraitement pour générer des variantes de documents spécifiques au public depuis une source unique.
Objectif
Section intitulée « Objectif »Le script Python profiling.py ci-dessous permet de profiler du contenu en preprocessing à l’aide du puissant moteur de modèle Jinja.
-
Créez le script
profiling.py:#!/usr/bin/env python3import jinja2import syspublic=str(sys.argv[1])env = jinja2.Environment(loader=jinja2.FileSystemLoader('./'))template = env.get_template('texte-conditionnel.rst')string=template.render(audience=public)file = open('texte-conditionnel-sortie.rst','w')file.write(string)file.close() -
Créez le fichier de contenu
texte-conditionnel.rst:Utilisation du texte conditionnel================================={% if audience=='electrician' %}.. admonition:: Danger pour les électriciensRisque d'électrocutionNe touchez pas les fils électriques.{% else %}.. admonition:: Danger pour les plombiersRisque de noyadeNe plongez pas dans la piscine.{% endif %} -
Exécutez le script en indiquant le public en paramètre :
Fenêtre de terminal ./profiling.py electricianLe script écrit la version du contenu destinée à ce public dans
texte-conditionnel-sortie.rst. -
Il suffit maintenant d’appeler le script avant compilation via Sphinx dans le
Makefile.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Pour définir des objets (audience, plateforme, version) plutôt que des chaînes, voir créer des documents différents à partir des mêmes sources via Jinja (méthode objet).
- Pour générer des variantes sans script de prétraitement, avec le Texte conditionnelContenu marqué comme ne s'appliquant qu'à un public, une version de produit ou un livrable donnés, afin qu'une même source puisse être filtrée à la compilation pour produire des documents différents. DITA XML le met en œuvre avec les fichiers ditaval ; des moteurs de modèles comme Jinja font de même pour les formats texte.Voir dans le glossaire → Sphinx, voir créer des documents différents à partir des mêmes sources ReST.