Re: To_Pascal_Snake_Case, et que stions dérivées autour de "character mapping"

Thomas De Contes via Ada-france <[email protected]> Thu, 22 Jul 2021 00:52:35 +0200
Newsgroups gmane.comp.lang.ada.france
Message-ID <[email protected]>
Le 18 juil. 2021 à 18:30, Thomas De Contes via Ada-france a écrit :

> Je cherche à convertir un texte quelconque en quelque chose de compatible avec les identificateurs à la façon de "GNAT Coding Style".



> 2

> (Si y en a qui cherchent, Ada.Strings.Maps.Value pour le type String s'appelle Ada.Strings.Fixed.Translate !)

Si on est rigoureux, il manque aussi Ada.Strings.Maps.Is_In pour le type String.
Je crois me souvenir qu'il est recommandé d'utiliser `0 /= Ada.Strings.Fixed.Index`, mais il y a des tas d'autres fonctions qui font office de raccourci, et à mon humble avis il en manque une pour ça (sauf si elle m'a échappé).

> 
> (Il me manque encore quelque chose qui ressemble à Ada.Strings.Fixed.Trim pour réduire les chaines de Low_Line au milieu.)

Je pense que je peux y arriver en utilisant Ada.Strings.Fixed.Trim dans une boucle récursive.
(Pour les supprimer complètement c'est assez facile, mais pour en laisser juste 1 au milieu mais pas sur les bords, c'est pas complètement trivial.)

En passant, `make` propose une fonction "strip" qui fait exactement ça (mais que avec les espaces) :
https://www.gnu.org/software/make/manual/html_node/Text-Functions.html
Il me semble que ça serais intéressant d'avoir la même en Ada aussi (y compris avec les espaces).
Qu'en pensez vous ?


(À quoi sert Ada.Strings.Space ?
Puisqu'on a à la fois la même chose dans Ada.Characters.Latin_1, et le littéral.)



> 3

> Ada.Characters.Handling.To_Basic permet de récupérer les lettres du jeu de caractères Latin-1, c'est toujours plus agréable qu'une conversion brute :-)
> 
> Mais j'ai cru comprendre qu'il y a pas mal d'autres lettres dans Wide_Character, même s'il n'y en a pas beaucoup plus dans Wide_Wide_Character.
> Or, il n'y a pas de To_Basic dans Ada.Wide_Characters.Handling, c'est dommage.
> Est ce que ça existe ailleurs ?

Je me suis aperçu fortuitement que Ada.Wide_Wide_Characters.Handling.To_Basic existera dans la prochaine version ! Super ! :-)

(Pourquoi est ce que No_Break_Space n'est pas converti en Space, et Superscript_* en leur chiffre ASCII correspondant ?)


Existe t il une norme qui indique que les Français transforment 'œ' en "oe" et les Allemands transforment 'ß' en "ss", quand ils ont besoin d'un texte parfaitement compatible ASCII, et de même pour les autres lettres spéciales des autres langues ?

Si oui, l'étape suivante serait de proposer une fonction pour cette transformation,
sachant que ça sera un peu plus délicat que pour To_Basic, puisque ça changera le nombre de caractères, donc plus possible de le faire uniquement avec Ada.Strings.Fixed.Translate, obligé de recourir à Ada.Strings.Fixed.Replace_Slice.


-- 
RAPID maintainer
http://savannah.nongnu.org/projects/rapid/

_______________________________________________
Ada-france mailing list
[email protected]
https://mail.ada-france.org/cgi-bin/mailman/listinfo/ada-france