Insérer automatiquement des données dans un fichier reStructuredText

Supposons que vous deviez présenter 3 produits, Dianthus, Geum et Prunus, chacun déclinés dans trois versions 1.0, 1.5 et 2.3.

Plutôt que d’écrire les données à la main dans le fichier de contenu, vous pouvez les insérer automatiquement grâce à Jinja et Python.

  1. Créez le fichier modele.rst suivant :

    Produits et versions
    ====================
    
    {% for prod in product %}
    {{ prod | capitalize }}
    {% for c in prod %}-{% endfor %}
       {% for ver in version %}
    - {{ ver }}
       {% endfor %}
    {% endfor %}
    
  2. Créez le script Python populate.py suivant :

    #!/usr/bin/python
    # coding: utf8
    import jinja2
    
    env = jinja2.Environment(loader=jinja2.FileSystemLoader('./'))
    
    template = env.get_template('modele.rst')
    
    data = {
        'product': ['dianthus', 'geum', 'prunus'],
        'version': ['1.0', '1.5', '2.3']
        }
    print(template.render(data))
    
  3. Rendez le script exécutable, puis exécutez-le :

    $ chmod +x populate.py
    $ ./populate.py
    

    Le contenu suivant s’affiche :

    Produits et versions
    ====================
    
    Dianthus
    --------
    
    - 1.0
    
    - 1.5
    
    - 2.3
    
    
    Geum
    ----
    
    - 1.0
    
    - 1.5
    
    - 2.3
    
    
    Prunus
    ------
    
    - 1.0
    
    - 1.5
    
    - 2.3
    

Vous minimisez ainsi le risque d’erreurs et l’effort de mise à jour.