• # Fini !!

    Posté par (site web personnel, Mastodon) . En réponse au journal Portage de TapTempo en Ada. Évalué à 3.

    Finalement, j'ai pris la fin du programme à bras-le-corps en ajoutant l'internationalisation via ZanyBlue, chose que je n'avais jamais faite.

    Comme je n'allais pas faire un deuxième journal pour ça, je préfère faire un commentaire ce qui permettra aux seuls intéressés d'être au courant :)

    Comment ça marche

    Comme souvent en Ada, on préfère la compilation à la gestion au runtime.
    Du coup, le point d'entrée pour l'internationalisation, c'est le fichier de properties qui contient les clés à insérer dans les zones de texte.

    Par exemple:

    displayHelp=Affiche ce message d''aide
    resetTime=r\u00E8gle le temps en secondes pour mettre le calcul \u00E0 z\u00E9ro. La valeur par d\u00E9faut est de 5 secondes
    sampleSize=r\u00E8gle le nombre d''\u00E9chantillons n\u00E9cessaires au calcul du tempo, la valeur par d\u00E9faut est 1
    precision=r\u00E8gle la pr\u00E9cision en d\u00E9cimales de l''affichage du tempo, la valeur par d\u00E9faut est 5 et le max est {0,integer}
    prologue=Version Ada de taptempo.

    La syntaxe de ce fichier de propriétés est tout ce qu'il y a de plus standard pour qui en a déjà écrit en Java.
    La seule chose vraiment notable vient de la ligne

    precision=r\u00E8gle la pr\u00E9cision en d\u00E9cimales de l''affichage du tempo, la valeur par d\u00E9faut est 5 et le max est {0,integer}

    Elle permet juste de préciser que l'on insérera une donnée dynamique, {0, mais qu'elle sera de type entière, integer}.

    Pourquoi faire cela ? Car ZanyBlue vient avec un compilateur de fichier de propriétés qui permet de générer du code Ada et donc de typer les différents accesseurs.

    Cela permet donc d'appeler notre substitution via, par exemple dans options.adb,

    Format_resetTime

    ou pour la précision

    Format_precision (+Precision'Last)

    Le code généré fournit donc des fonctions permettant de formater une chaine à partir d'une clé mais elle fournit aussi des procédures se substituant aux entrées-sorties classiques d'Ada.
    Ainsi, l'affichage du premier et du dernier message s'appellent tout simplement via

    Print_hitKey;
    Print_byeBye;

    Ces appels possèdent un paramètre optionnel With_NL permettant de préciser si l'on doit retourner à la ligne ensuite.

    Print_tempo (With_NL => False);

    Voilà, au final, c'était quasiment bête comme chou ;)

    Comme d'habitude, c'est