[OSM-talk-fr] JOSM et validation rule : bug avec regexp_match ? — Re: Nettoyage des clés mapillary

PanierAvide panieravide at riseup.net
Mar 5 Nov 17:30:39 UTC 2019


Dans la catégorie fonctionnement étrange, j'ai bien l'impression que les 
"/" avec échappement sont pas hypers appréciés, exemple avec la règle :

|*[mapillary][mapillary!~/^[a-zA-Z0-9_-]{22}$/][mapillary=~/mapillary.com\/map\/im\/[a-zA-Z0-9_-]{22}/] 
{||
||    throwError: tr("mapillary tag should only contain image ID instead 
of full URL");||
||    fixAdd: concat("mapillary=", 
get(regexp_match(".*mapillary.com\/map\/im\/([a-zA-Z0-9_-]{22}).*", 
tag("mapillary")),1));||
||}|

Qui produit les tags suivants après correction :

|concat("mapillary = ", 
get(regexp_match(".*mapillary.com\/map\/im\/([a-zA-Z0-9_-]{22}).*", 
tag("mapillary")),1))||
||mapillary = https://www.mapillary.com/map/im/EB6DhiSl0wUn6MVK-itdZw|

Adrien P.

Le 05/11/2019 à 17:57, PanierAvide a écrit :
>
> Bien vu ! J'ai pu modifier en conséquence la règle pour le tag 
> mapillary sur https://josm.openstreetmap.de/wiki/Rules/Pictures
>
> Adrien P.
> Le 05/11/2019 à 12:39, Yves P. a écrit :
>> Bonjour,
>>
>>> Le 3 nov. 2019, PanierAvide  a écrit :
>>>
>>> Sur le modèle du fichier MapCSS pour les tags Wikimedia, on peut 
>>> ajouter une règle avec un "regexp_match" pour rechercher/remplacer 
>>> automatiquement. Pour une raison qui m'échappe, la règle suivante 
>>> qui devrait faire le boulot ne fonctionne pas (pour tester, créer un 
>>> nœud avec le tag 
>>> mapillary=https://www.mapillary.com/app/?lat=49.18298900000002&lng=-2.1090169999999944&z=17&pKey=XCcwknc5F9zgqs6GKBUFig) 
>>> :
>>>
>>> |*[mapillary][mapillary!~/^[a-zA-Z0-9_-]{22}$/][mapillary=~/pKey=[a-zA-Z0-9_-]{22}/] 
>>> {||
>>> ||    throwError: tr("mapillary tag should only contain image ID 
>>> instead of full URL");||
>>> ||    fixAdd: concat("mapillary=", 
>>> get(regexp_match("pKey=([a-zA-Z0-9_-]{22})", tag("mapillary")),1));||
>>> ||}|
>>>
>>> Si un expert JOSM/MapCSS peut nous éclairer là-dessus... :-)
>>>
>>>
>> En fait, c’est comme si il manquait le flag « g ».
>> L’expression « *pKey=(.*)* » ne fonctionne pas, mais « *.*pKey=(.*).* 
>> *» oui !!
>>
>> La doc 
>> <https://josm.openstreetmap.de/wiki/Help/Styles/MapCSSImplementation> parle 
>> de flag i, m ou s.
>> Flags is a string that may contain "i" (case insensitive), "m" 
>> (multiline) and "s" ("dot all »)
>> Idem pour Javadoc 
>> <https://josm.openstreetmap.de/doc/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.html#regexp_match-java.lang.String-java.lang.String-java.lang.String->
>>
>> Il y a plus de flags décrit ici 
>> <https://josm.openstreetmap.de/doc/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.html#regexp_match-java.lang.String-java.lang.String-java.lang.String-> : 
>>
>>
>>     |flags| - Match flags, a bit mask that may include
>>     |CASE_INSENSITIVE|
>>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#CASE_INSENSITIVE>,
>>     |MULTILINE|
>>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#MULTILINE>,
>>     |DOTALL|
>>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#DOTALL>,
>>     |UNICODE_CASE|
>>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#UNICODE_CASE>,
>>     |CANON_EQ|
>>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#CANON_EQ>,
>>     |UNIX_LINES|
>>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#UNIX_LINES>,
>>     |LITERAL|
>>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#LITERAL>,
>>     |UNICODE_CHARACTER_CLASS|
>>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#UNICODE_CHARACTER_CLASS> and
>>     |COMMENTS|
>>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#COMMENTS>
>>
>> Le flag g de Perl est implicite d’après la doc :
>>
>>  *
>>
>>     Perl uses the g flag to request a match that resumes where the
>>     last match left off. This functionality is provided implicitly by
>>     the |Matcher|
>>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html> class:
>>     Repeated invocations of the |find|
>>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html#find--> method
>>     will resume where the last match left off, unless the matcher is
>>     reset.
>>
>> C’est comme si l’expression régulière était évaluée différemment par 
>> regexp_match et MapCSS ??
>>
>>>> Yves
>>
>>
>> _______________________________________________
>> Talk-fr mailing list
>> Talk-fr at openstreetmap.org
>> https://lists.openstreetmap.org/listinfo/talk-fr
>
> _______________________________________________
> Talk-fr mailing list
> Talk-fr at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20191105/400ac7fc/attachment.htm>


Plus d'informations sur la liste de diffusion Talk-fr