Chapter 5 Personnalisation de la génération à l'aide du langage de génération par template


Macro .foreach_part

Cette macro procède à l'itération sur la partie du template en entrée spécifiée comme premier argument de la macro. Le template spécifié dans le bloc est converti pour chaque partie de l'entrée.

.foreach_part (input [,"séparateur-pattern" [,en-tête [,fin]]])
	template-simple
.next[(séparateur)]

Cette macro crée une nouvelle portée dans laquelle la variable locale CurrentPart est définie comme la i-ème partie du template en entrée à l'itération i. La variable locale Separator contient le séparateur suivant.

Cette macro est particulièrement utile lorsque vous travaillez sur les conventions de dénomination.

Pour plus d'informations les conventions de dénomination, voir "Conventions de dénomination" dans le chapitre Modèles du Guide des fonctionnalités générales.

Les paramètres suivants sont disponibles :

Paramètre Description
entrée Texte en entrée sur lequel l'itération est effectuée

Type : Template simple
séparateur-motif Séparateurs de caractères et de mots

  • Tout caractère spécifié dans le motif peut être utilisé comme séparateur
  • [<c1> - <c2>] spécifie un caractère au sein de la plage définie entre les caractères <c1> et <c2>


Par exemple, le motif suivant " -_,[A-Z]" spécifie que chaque partie peut être séparée par un espace, un tiret, un trait de soulignement, une virgule ou un caractère compris entre A et Z (majuscule).

Par défaut, le séparateur-est initialisé avec le motif (). Si le motif spécifié est vide, le motif est initialisé à l'aide de la valeur par défaut.

Un séparateur séparateur peut être concaténé entre chaque partie. Les expressions en-tête et fin peuvent être ajoutées respectivement au début ou à la fin de l'expression générée.

Il existe deux types de séparateur :

  • Séparateur de caractères : pour chaque séparateur de caractères, le séparateur spécifié dans la prochaine instruction de la macro est renvoyé (même pour des séparateurs consécutifs)
  • Séparateur de mots : ils sont spécifiés en tant qu'intervalles, par exemple [A-Z] spécifie que toutes les lettres majuscules sont des séparateurs. Pour un séparateur de mots, aucun séparateur (spécifié dans la prochaine instruction) n'est renvoyé


Valeur par défaut : " -_,\t"

Type : Texte
en-tête [facultatif] Généré avant le résultat, s'il y en a un

Type : Texte
fin [facultatif] Ajouté au résultat, s'il y en a un

Type : Texte
template-simple Template à appliquer à chaque partie.

Type : Template complexe
séparateur [facultatif] Généré entre évaluations non vides de template-complexe

Type : Texte

Exemples :

Convertit un nom en code de classe (conventions de dénomination Java). Dans l'exemple suivant, la variable %Name% équivaut à Employee shareholder', et est convertie en EmployeeShareholder :

.foreach_part (%Name%, " _-'")
	%.FU:CurrentPart%
.next

Convertit un nom en code d'attribut de classe (conventions de dénomination Java). Dans l'exemple suivant, la variable %Name% équivaut à Employee shareholder, et est convertie en EmployeeShareholder :

.set_value(_First, true, new)
.foreach_part(%Name%,"' _-'")
	.if (%_First%)
		%.L:CurrentPart%
		.set_value(_First, false, update)
	.else
		%.FU:CurrentPart%
	.endif
.next

 


Copyright (C) 2008. Sybase Inc. All rights reserved.