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 <[email protected]> a écrit : > > > Le jeu. 25 oct. 2018 à 16:45, Francois Gouget <[email protected]> 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 [email protected] https://lists.openstreetmap.org/listinfo/talk-fr

