Skip to content

Start working on "FIX/Improve feedback on errors"

Frederic Zinelli a demandé de fusionner 53-fix-improve-feedback-on-errors vers main

Première passe en vue de fermer #53 (closed) et #35 (closed)

  • Ajout d'un logger dédié pour pyodide (lié à celui de mkdocs => meilleur présentation des messages affichés dans la console). Voir ./mkdocs_macro_pyodide/pyodide_logger.py

  • Transformation du fichier main.py en un package mkdocs_macros_pyodide, afin de pouvoir utiliser du code réparti dans différents fichiers/packages durant les macros

  • Renommage de my_theme_customizations en mkdocs_theme_pyiodide

  • Restructuration du contenu du dossier, en vue de pouvoir splitter les fichiers JS plus tard

  • Ajout d'une mécanique mettant automatiquement à jour main.html avec tous les fichiers .js et .css contenus dans le custom_dir, afin de ne pas avoir à synchroniser à la main le fichier (voir macros/build_tools.py).

    • La synchro se fait au début de la définition des macros, depuis mkdocs_macro_pyodide.main:define_env (appelant mkdocs_macro_pyodide.build_tools:update_header_for_pyodide_scripts_and_css)
    • Des infos sur la mise à jour ou non de main.html son affichées dans la console
    • A noter que si main.html est mis à jour, 2 opérations successives de build du site vont être faites, car le custom_dir est surveillé par mkdocs et la modification du fichier va donc être vue.
  • Déplacement de la configuration pour MathJax dans mkdocs_theme_pyodide/qcm/mathjax-config.js, et suppression de mkdocs.yml/extra_javascripts. Le chargement du cdn nécessaire est du coup rebasculé dans main.html (puisque nécessaire aux qcm's) Retour en arrière: je n'ai pas trouvé comment faire marcher la partie MathJax si elle est insérée via main.html...

Redécoupage de main.py

  • Transformation an package mkdocs_macros_pyodide
  • Séparation des différentes macros en modules clairement identifiables
  • Introduction d'un singleton MaestroEnv contenant les variables globales (englobe le env des macros)

Ajout de fonctionnalités (python)

  • La classe Html, pour construire des tags divers et variés de manière systématique
  • Introduction du crochet on_post_page_macros:
    • Va permettre d'insérer les scripts JS de manière contrôlée, en ne les insérant que quand nécessaire. Notes:
      • Important: les scripts ne doivent être insérés qu'une seule fois par fichier => système d'enregistrement des "besoins" dans MaestroEnv.
      • permet de se débarrasser du block content de main.html, qui insère systématiquement IDE.js dans toutes les pages, à l'heure actuelle
    • Devrait permettre de se passer complètement de escape_problematic_characters_in_files, en faisant les insertions après que le markdown ait été rendu (il faudra remplacer les appels de macros par un token spécific et enregistrer dans MaestroEnv le code à insérer pour chaque token | ATTENTION: vérifier la faisabilité.
    • Va aussi permettre de transformer les macros pour utiliser au final des objets auxquels on associera des bouts spécifiques de code js, voire des fichiers css (...en gros, je suis entrain de reconstruire Angular... En fait... 😄 )
  • Augmentation de MaestroEnv, pour le rendre plus versatile.
  • MAJ de macros/build_tools.py et de MaestroEnv pour scinder la logique de ce qui reste dans main.html et ce qui se retrouvera dans les pages elles-mêmes.

"Prétraitements" pour la partie JS

  • Ajouts de qqes commentaires ici ou là
  • Qqes fonctions déplacées
  • Sécurisation du code de traitement des erreurs, pour empêcher les boucles infinies
  • Qqes "fixes" mineurs
Modification effectuée par Frederic Zinelli

Rapports de requête de fusion