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

Répondre à