Macro .foreach_part

Cette macro permet une itération et une transformation des parties du template d'entrée, avec des parties délimitées par un motif séparateur.

.foreach_part (expression [,"sépateur" [,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 souvent utilisé afin d'appliquer des conventions de dénomination (voir Guide des fonctionnalités générales > L'interface de PowerAMC > Objets > Propriétés d'un objet > Conventions de dénomination).

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

motif-séparateur

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 <motif-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