D'ailleurs à mon avis je supprimerais complètement le "off" de l'attribut "opening_hours=*" (il complique tout inutilement)
A la place je mettrais un autre attribut "closing_hours=*" (avec la même syntaxe, mais là aussi sans "off" ni "on") et qui n'a de sens que s'il est associé à un attribut "opening_hours=*" (à interpréter en premier, le "closing_hours=*" n'apportant que des exceptions). Dans ce cas plus d’ambiguïté du tout, plus besoin de virgule (encore moins le "|" inutile), le point-virgule suffit à tout, chacune des deux listes étant écrite dans un ordre quelconque. Le ven. 26 oct. 2018 à 14:31, Philippe Verdy <verd...@wanadoo.fr> a écrit : > Note: si tous les éléments sont "on" (il n'y a aucun "off") utiliser la > virgule ou le point-virgule ne donnera aucune différence puisque l'ordre > n'est alors pas significatif. C'est pour ça que le point-virgule est aussi > autorisé, mais il est à éviter totalement s'il y a même un seul élément > "off" (qu'on doit placer à la fin, donc toujours après une virgule). > > > Le ven. 26 oct. 2018 à 14:28, Philippe Verdy <verd...@wanadoo.fr> a > écrit : > >> >> >> Le jeu. 25 oct. 2018 à 16:45, Francois Gouget <fgou...@free.fr> a écrit : >> >>> On Thu, 25 Oct 2018, Megan Parat wrote: >>> [...] >>> > En utilisant les particularités des séparateurs de règles, et un ordre >>> > particulier, j'ai cette expression d'opening_hours qui comporte 161 >>> > caractères : >>> > >>> > 08:00-17:45; PH,Sa,Su 08:00-09:00 off, Mar 01-Mar Su[-1] 17:45-19:00, >>> > Oct 01-Oct Su[-1] 17:45-19:30, Mar Su[-1]-Apr 30,Sep 17:45-20:30, May >>> > 01-Aug 31 17:45-21:30 >>> > >>> > Je crois qu'elle est valide. >>> >>> Joli ! >>> Après consultation de la "spécification complète" (dont je ne trouve le >>> lien que dans la version anglaise du wiki), je crois aussi qu'elle est >>> valide. >>> >>> Là où la page opening_hours laisse penser que la virgule ne peut être >>> utilisée que dans les listes (d'années, de mois ou d'heures), la >>> spécification complète indique qu'on peut l'utiliser partout où on peut >>> utiliser le point-virgule : >>> >>> | opening_hours = <time_domain> >>> | <time_domain>: <rule_sequence> { <any_rule_separator> <rule_sequence> >>> } >>> | any_rule_separator: ';' | ',' | '||' >>> >> >> Pas tout à fait : >> * le point-virgule dans un attribut indique une liste non-ordonnée (dont >> les éléments peuvent être librement permutés sans changement >> d'interprétation) : c'est valable normalement pour tout attribut OSM. >> * alors que la virgule impose un ordre de priorité. >> >> De fait les éléments séparés par point-virgules doivent être indépendants >> (ne pas se recouvrir, ou bien être équivalents sémantiquement) >> >> Ce qui n'est pas le cas dans l'exemple ici car le premier élément de la >> liste séparée par point-virgule "08:00-17:45" couvre une bonne partie du >> second (qui indique des horaires différents pour certaines dates). >> >> Il ne devrait donc pas y avoir de point-virgule du tout dans ton exemple, >> où la virgule dans un liste vient ajouter des éléments (ajouter des plages >> horaires, ou en retirer avec "off") à la liste en modifiant les précédents. >> >> La syntaxe utilisée ci-dessus est en fait ambiguë puisque la partie >> séparée par des virgules (une fois le point-virgule converti en virgule) >> contient les éléments suivants, qui doivent être lus dans l'ordre, chaque >> élément modifiant le calendrier: >> - au départ (liste vide), par défaut tout est fermé, tous les jours >> quelque soit l'heure >> - "08:00-17:45" : ajoute l'ouverture tous les jours à cette plage horaire >> (cela remplace la fermeture >> - "PH" : n'indique aucune plage horaire, donc veut dire que cela ajoute >> l'ouverture toute la journée (24/24) des jours fériés >> - "Sa" : n'indique aucune plage horaire, donc veut dire que cela ajoute >> l'ouverture toute la journée (24/24) de tous les samedis (fériés ou pas) >> - "Su 08:00-09:00 off" : exclue de tout ce qui précède l'ouverture de 8h >> à 9h si c'est un dimanche (donc le dimanche reste ouvert 23h sur 24 si >> c'est férié, sinon ouvert seulement de 9h à 17h45) >> - "Mar 01-Mar Su[-1] 17:45-19:00 : ajoute l'ouverte à cette plage horaire >> tous les jours de entre le 1er du mois de mars et le dernier dimanche de >> mars (n'a pas d'effet sur les dimanches fériée de mars, mais les autres >> dimanches non fériés de mars ont une ouverture allongée) >> - etc. (autres plages horaires ajoutées pour d'autres dates) >> >> Cette liste ne peut pas être librement permutée (notamment entre les >> éléments contenant des "off" et ceux qui sont "on" par défaut), mais peut >> être permutée entre deux éléments "on" s'il n'y a aucun élément "off" entre >> les deux. >> >> Et c'est le cas ici car tous les éléments sont "on" (par défaut), SAUF le >> 4e (Su 08:00-09:00) qui est "off". >> >> Hors je ne pense pas que ce soit ce que tu voulais (pas convaincu que tu >> voulais mettre des jours fériés avec une ouverture 24/24 (ou 23/24 le >> dimanche). Si tu retire le 4e élément (Su 08:00-09:00 off), tous les autres >> éléments sont librement permutables puisqu'ils sont tous "on" par défaut : >> ils forment une combinaison (en "ou") de tous les horaires indiquer, ne >> peuvent pas se contredire entre eux mais peuvent se recouvrir mutuellement. >> >> Si tu utilises le ";" les éléments doivent être mutuellement exclusifs >> entre les dates concernées, mais c'est encore sujet à ambiguïté (le >> point-virgule ne devrait dont pas être utilisé du tout, la virgule en >> revanche garantie et impose l'ordre d'interprétation). >> >> En général il est plus simple de concevoir les opening_hours en listant >> d'abord au début tous les éléments "on" (par défaut) dans un ordre >> quelconque pour ajouter des horaires d'ouverture, et seulement ensuite en >> listant tous les éléments "off" aux aussi dans un ordre quelconque pour >> retirer certains horaires ajoutés par la première liste (donc mentionner >> des exceptions à la première liste) : il n'y a alors aucun risque >> d'ambiguité. >> >> L'ennui de la syntaxe actuelle est qu'elle oblige à répéter explicitement >> la propriété "off" pour chacun des éléments "off" de la seconde liste; il >> aurait juste suffit d'imposer l'ordre "liste de tous les horaires >> d'ouverture", puis un mot clé "off" suivi de la liste des exceptions où des >> horaires sont fermés). On aurait eu une syntaxe allégé (plus d'obligation >> de répéter "off", plus facile à interpréter, et jamais ambiguë >> >> Mais dans l'état actuel il faut éviter d'avoir une alternance de "on" à >> "off", puis à nouveau à "on". >> >>
_______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-fr