Je veux limiter certaines fonctionnalités markdown pour le premier message du sujet, qui provient de mon plugin.
Cela pourrait être facilement implémenté côté client en accédant à l’attribut topicFirstPost du modèle composer. Cependant, côté serveur, dans lib/pretty_text.rb et model/post.rb, j’ai constaté que seul topic_id est passé à la méthode cook. Je pourrais éventuellement vérifier l’attribut posts_count du sujet, mais cela ne fonctionnerait pas lors du re-cuisson.
Peut-être que je ne devrais utiliser aucun état dans le processus markdown-it ?
Une autre façon d’y parvenir est de générer un espace réservé à l’aide de markdown, puis de mettre à jour l’aperçu manuellement et d’écouter certains événements post-cuisson côté serveur, mais cela pourrait nécessiter un travail supplémentaire.
Je préférerais la première méthode si possible. Merci pour vos suggestions.
Veuillez imaginer que le plugin ajoute des balises BBCode personnalisées, ou encapsule tout texte avec une balise HTML personnalisée pour une utilisation ultérieure, comme sa décoration. Je ne veux pas qu’il prenne effet en dehors du premier message (ou en fonction d’autres conditions), car je n’en ai pas besoin et cela pourrait causer des effets secondaires.
De plus, j’ai peut-être trouvé une solution possible côté serveur. Elle encapsule la méthode cook du modèle Post. Je ne l’ai pas encore testée.
class ::Post
# encapsule la méthode cook originale pour ajouter des options de fonctionnalités
# voir la méthode markdown dans lib/pretty_text.rb
alias_method :original_cook, :cook
def cook(raw, opts = {})
features = {
'feature-name': is_first_post?
}
if opts.has_key?(:features)
opts[:features].merge!(features)
else
opts[:features] = features
end
original_cook(raw, opts)
end
end