Modèle de texto

Cela crée et retourne un nouvel objet de modèle. New retourne FNUD et définit $Text:: Template:: Error s`il ne peut pas créer l`objet template. SOURCE indique d`où viendra le code source du modèle. TYPE indique quel type d`objet la source est. Si l`un des fragments de programme dans le modèle échoue, il appellera la fonction BROKEN, my_broken, et lui passera le BROKEN_ARG, qui est une référence à $error. my_broken peut stocker un message d`erreur dans $Error de cette façon. Ensuite, la fonction qui a appelé fill_in peut voir si my_broken a laissé un message d`erreur pour qu`il trouve, et procédez en conséquence. À partir de Text:: template version 1,20, le traitement de barre oblique inverse est désactivé si vous utilisez l`option délimiteurs pour spécifier des chaînes de séparateur alternatives. Toutefois, pour faciliter le formatage du code source du modèle, si le délimiteur gauche d`une action (par défaut «{{») est immédiatement suivi d`un signe moins et d`un caractère d`espace ASCII («{{-»), tous les espaces blancs de fin sont coupés du texte précédent immédiatement. De même, si le délimiteur droit («}}») est précédé d`un espace et d`un signe moins («-}}»), tous les espaces blancs de premier plan sont coupés du texte suivant immédiatement. Dans ces marqueurs de Trim, l`espace ASCII doit être présent; «{{-3}}» analyse comme une action contenant le numéro-3. Voici quelques exemples de modèles à une ligne illustrant les pipelines et les variables.

Tous produisent le mot cité «output»: le texte a été modifié pour omettre le saut de ligne de fin et pour inclure le nom du fichier de modèle (s`il y en avait un). Le numéro de ligne compte à partir du début du modèle, et non pas du début du fragment de programme défaillant. renderA:: applicative f = > template-> ContextA f-> f texte source Text:: template modèles sont programmés en Perl. Vous intégrez le code perl dans votre modèle, avec {au début et} à la fin. Si vous voulez une variable interpolée, vous l`écrivez comme vous le feriez en Perl. Si vous avez besoin de faire une boucle, vous pouvez utiliser n`importe quelle construction de boucle de Perl. Toutes les fonctions intégrées de Perl sont disponibles. Si vous utilisez $template-> fill_in (paquet = > `R`), alors le $x dans le modèle est effectivement remplacé par la valeur de $R:: x. Si vous omettez l`option de PACKAGE, $x sera remplacé par la valeur de la variable $x dans le package qui a réellement appelé fill_in. Il y a trois autres façons de le faire.

Au moment où vous créez l`objet modèle avec un nouveau, vous pouvez également fournir une option PREPEND, auquel cas les instructions seront ajoutés à chaque fois que vous remplissez ce modèle. Si l`appel fill_in a sa propre option PREPEND, celui-ci se substitue à celui spécifié au moment où vous avez créé le modèle. Enfin, vous pouvez faire l`appel de méthode de classe une fois analysé, un modèle peut être exécuté en toute sécurité en parallèle, bien que si les exécutions parallèles partagent un writer, la sortie peut être entrelacée. et il va sortir du moteur de modèle de la façon dont vous voulez. Étant donné que l`analyse des modèles est simplifiée par l`absence d`échappement de barre oblique inverse, l`utilisation de séparateurs alternatifs peut accélérer le processus d`analyse de 20-25%. Cela montre que mon choix original de {et} était très mauvais. Si vous spécifiez DÉLIMITEURS dans l`appel à fill_in, ils remplacent tous les délimiteurs que vous avez définis lorsque vous avez créé l`objet de modèle avec New. Si vous ne spécifiez pas une fonction cassée, Text:: template fournit une valeur par défaut qui renvoie quelque chose comme il y a une astuce spéciale que vous pouvez jouer dans un modèle.

Voici la motivation pour cela: Supposons que vous allez passer un tableau, @items, dans le modèle, et que vous souhaitez que le modèle de générer une liste à puces avec un en-tête, comme ceci: cet exemple montre comment utiliser un groupe de modèles de pilote avec des jeux distincts d`assistance Modèles. Normalement, la façon dont cela fonctionne est en allouant un package privé, en chargeant toutes les variables dans le package, puis en remplissant le modèle comme si vous aviez spécifié ce package. Un nouveau package est alloué à chaque fois. Toutefois, si vous utilisez également l`option PACKAGE, Text:: template charge les variables dans le package que vous avez spécifié, et ils y restent après le retour de l`appel.



« (Previous News)



Comments are Closed