2010-12-14 23 views
1

Est-il possible de modifier facilement le modèle (Template Toolkit) lorsqu'il est chargé, avant qu'il ne soit mis en cache en tant que code Perl? Je veux lancer une expression régulière dessus.modification du modèle TT

Répondre

5

Vous pouvez fournir votre propre Template::Provider qui sous-classe le standard. De la fine manuel:

Le Template :: Provider est utilisé pour charger, analyser, compiler et mettre en cache des documents modèles. Cet objet peut être sous-classé pour fournir des fonctionnalités plus spécifiques pour le chargement, ou donnant accès aux modèles.

Ainsi, il devrait être assez facile, mais facile, bien sûr, dépend en grande partie de vos compétences.

4

La suggestion Template :: Provider ci-dessus est probablement la meilleure façon de le faire. Mais il y a aussi une approche plus simple (si légèrement hacky). Vous pouvez lire le modèle dans un scalaire et exécuter toutes les transformations que vous voulez avant de le passer au processeur de modèles. Le secret est que la méthode process() prend divers types de valeur comme premier paramètre. Si vous donnez un scalaire, c'est supposé être le nom d'un fichier qui contient le modèle. Mais si c'est une référence à un scalaire, alors il suppose que ce scalaire contient le modèle réel. Voir the documentation pour plus de détails.