[OSM-talk-fr] opening_hours contre les parcs parisiens
Philippe Verdy
verdy_p at wanadoo.fr
Ven 26 Oct 12:31:40 UTC 2018
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 <verdy_p at wanadoo.fr> a écrit :
>
>
> Le jeu. 25 oct. 2018 à 16:45, Francois Gouget <fgouget at 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".
>
>
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20181026/c22267d6/attachment.htm>
Plus d'informations sur la liste de diffusion Talk-fr