lundi 8 juin 2015

Les majuscules aux bons endroits avec JavaScript

L’étiquetage des toponymes - les noms de lieux - est un problème récurrent en cartographie, en tous cas pour la France où les noms composés abondent. Souvent, on dispose de bases de noms en bas de casse ou capitales. QGIS propose une fonction, Title(), pour passer l'initiale en majuscule. Mais rien pour Saint-Paul-Trois-Châteaux ou Sotteville-les-Rouen. Dans ce dernier cas, l'article doit rester en bas de casse. Je m'étais arraché les cheveux sur un un script dans QGIS, sans succès. La dernière version du logiciel propose de définir ses propres fonctions, ce qui donne de l'espoir. Parce que, c'est assez facile à comprendre, la fonction dont on a besoin ici est récursive. En effet, on ne sait pas a priori combien de mots séparés par des tirets le toponyme comportera.

L'idée de l'algorithme est de capitaliser le premier mot situé avant un tiret (sauf si c'est un mot de liaison) et d'appeler la fonction en lui passant en argument le reste du nom de lieu. Une fonction qui s'appelle elle-même en un point de son exécution, c'est l'illustration de ce style dit fonctionnel qu'affectionnent tant les matheux. Et c'est vrai que c'est assez joli. Peu de code, peu de bug (pour voir le code Ctrl-u).

J'ai découvert récemment le JavaScript. Le langage se prête bien au style fonctionnel. Et le programme marche. Il restera à reprendre l'idée pour QGIS.

Dernière itération du code : 22 août 2016.






EnMajUScuLeS

--