Le but de cette classe est de faciliter la création de Patterns
Il est assez difficile d’écrire un pattern qui accepte une date. Si on ajoute (1) qu’on accepte les années en 2 et en 4 positions, (2) que le séparateur peut être / ou -, (3) qu’on va valider au maximum les dates, cela devient assez difficile
Mais si on pouvait définir des pièces qu’on va réutiliser, cela devient un peu plus facile
Il faut aussi télécharger le Topological Sort :
http://www.atoutfox.com/articles.asp?ACTION=FCONSULTER&ID=0000000645
Il faut mettre RegexPatternHelper.prg dans le repertoire 'Prog' et l'ajouter a Set Proc
Voir
(1) L’exemple
(2) La docu dans RegexPatternHelper.prg en haut
Comment est-ce que ca marche ?
>> Regarder la definition dans le code. Html ne fait pas un bon travail si je l'inclus ici
(1) On commence d’abord par mettre les lignes de la définition dans une collection. La clef sera la partie gauche de la ligne (eg ddmmyyyy_slash ) et le contenu sera la partie droite (eg \b(\/\d{4})\b)
(2) Puis on parcourt toutes les définitions pour en extraire les définitions dépendantes (eg ddmm_slash dépend de ddmm_29_slash, ddmm_30_slash et de ddmm_31_slash
(3) Puis on fait un tri (topological sort) qui va retourner un ordre d’évaluation. Eg, il faut évaluer ddmm_29_slash, ddmm_30_slash et ddmm_31_slash avant d’évaluer ddmm_slash.
(4) Ayant obtenu un ordre d’évaluation on va traiter la collection dans cet ordre. Le traitement est simple, juste remplacer la définition. L’astuce est de le faire dans le bon ordre.
Ps : il est possible de mettre les définitions courantes dans un champ memo d’une table incluse dans le projet
|
Bien pensé, très bien réalisé. Chapeau.
On se sent tout petit...
Merci Grégory
JpG