Aidez-moi à comprendre : le processus post-cuisson

Bonjour,

Je serais très reconnaissant si quelqu’un pouvait m’aider à comprendre comment fonctionne le processus de post-cuisson. Je suis particulièrement intéressé par cette partie :

Pourquoi le post-traitement a-t-il lieu après que le message a déjà été « cuit » ?

Peut-être pourrions-nous passer en revue les étapes nécessaires pour ajouter une fonctionnalité comme les oneboxes ou les « citations d’utilisateurs spécifiques », si elle n’existait pas encore. Je suis ainsi tombé sur Prettytext discourse/app/assets/javascripts/pretty-text at f9608c0af5f7b1109117a5aba979acb00c28cf9a · discourse/discourse · GitHub
qui gère la conversion vers et depuis le Markdown ainsi que le rendu de la zone d’aperçu. J’ai également trouvé la fonction rebake dans le modèle de message côté backend :

qui appelle la méthode cook de PostAnalyzer :

Cette fonction exécute la conversion Markdown en JavaScript côté backend :

Mon hypothèse était que cela se fait ainsi pour éviter la duplication de code, mais j’ai ensuite découvert le :

CookedPostProcessor

que j’ai lié plus haut. Il semble que certains traitements soient effectués uniquement en JavaScript, tandis que d’autres le sont à la fois en JavaScript et en Ruby dans CookedPostProcessor. Pour résumer :

  1. Vous devez disposer de règles de conversion vers et depuis le Markdown (semble-t-il uniquement en JavaScript).
  2. Vous devez disposer d’un code pour générer le HTML (une partie en JavaScript, mais une autre aussi en Ruby).

Je suis curieux de savoir pourquoi le point (2) est réalisé partiellement en JavaScript et partiellement en Ruby. Pourriez-vous me donner un exemple ?
Je serais également très heureux si vous pouviez corriger les hypothèses erronées que j’ai formulées dans ce message.

Un grand merci ! :smiley:
Spirobel

Pour commencer, consultez simplement l’onglet Réseau de la console JavaScript afin de voir ce qui est capturé côté frontend et transmis au serveur lors de la création d’un article. Cela signifie que toutes les données envoyées à l’API Rails sont ensuite traitées par Rails. Ensuite, dans la table posts, vous verrez les colonnes raw et cooked, qui indiquent respectivement les versions non traitée et traitée de l’article.

D’accord, merci pour votre réponse. Je pense que je vais simplement explorer cela pièce par pièce. Je crois que cette approche de « raisonner à partir de principes fondamentaux » que j’ai adoptée ne fonctionne pas, car cela s’est développé pour des raisons historiques.