<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>On 10/26/18 2:28 PM, Philippe Verdy wrote:<br>
    </p>
    <blockquote type="cite"
cite="mid:CAGa7JC0mGjiKRX1ttLwd8s=P111B1oDEqNEVX+y7UktGQzUrzQ@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">Le jeu. 25 oct. 2018 à 16:45, Francois Gouget <<a
          href="mailto:fgouget@free.fr" moz-do-not-send="true">fgouget@free.fr</a>>
        a écrit :<br>
        <div class="gmail_quote">
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, 25
            Oct 2018, Megan Parat wrote:<br>
            [...]<br>
            <br>
            > 08:00-17:45; PH,Sa,Su 08:00-09:00 off, Mar 01-Mar
            Su[-1] 17:45-19:00,<br>
            > Oct 01-Oct Su[-1] 17:45-19:30, Mar Su[-1]-Apr 30,Sep
            17:45-20:30, May<br>
            > 01-Aug 31 17:45-21:30<br>
            <br>
            [...]<br>
            <br>
            Là où la page opening_hours laisse penser que la virgule ne
            peut être <br>
            utilisée que dans les listes (d'années, de mois ou
            d'heures), la <br>
            spécification complète indique qu'on peut l'utiliser partout
            où on peut <br>
            utiliser le point-virgule :<br>
            <br>
            |  opening_hours = <time_domain><br>
            |  <time_domain>: <rule_sequence> {
            <any_rule_separator> <rule_sequence> }<br>
            |  any_rule_separator: ';' | ',' | '||'<br>
          </blockquote>
          <div><br>
          </div>
          <div>Pas tout à fait :</div>
          <div>* 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.</div>
          <div>* alors que la virgule impose un ordre de priorité.</div>
          <div><br>
          </div>
          <div>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)</div>
          <div><br>
          </div>
          <div>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).</div>
          <div><br>
          </div>
          <div>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.</div>
        </div>
      </div>
    </blockquote>
    <p>L'ordre a une importance en général :</p>
    <p>La spécification explique que la syntaxe générale d'opening_hours
      est une liste de sélecteurs séparés par des points-virgules. Les
      horaires retenus pour une date correspondent au *dernier*
      sélecteur valide. (cf. explication pour time_domain sur la page
      <a class="moz-txt-link-freetext" href="https://wiki.openstreetmap.org/wiki/FR:opening_hours/specification">https://wiki.openstreetmap.org/wiki/FR:opening_hours/specification</a>)<br>
    </p>
    <p>L'intérêt de la virgule est de pouvoir écrire par exemple
      '08:00-18:00, Fr 20:00-24:00'. Avec une virgule, pour le vendredi,
      c'est ouvert de 8h à 18h, puis de 20h à minuit. Avec un
      point-virgule, c'est ouvert seulement de 20h à minuit car la
      deuxième règle est valable pour ce jour, et ainsi prend
      précédence. (cf. explication de additional_rule_separator §1)</p>
    <blockquote type="cite"
cite="mid:CAGa7JC0mGjiKRX1ttLwd8s=P111B1oDEqNEVX+y7UktGQzUrzQ@mail.gmail.com">
      <div dir="ltr">
        <div class="gmail_quote">
          <div>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:</div>
          <div>- au départ (liste vide), par défaut tout est fermé, tous
            les jours quelque soit l'heure</div>
          <div>- "08:00-17:45" : ajoute l'ouverture tous les jours à
            cette plage horaire (cela remplace la fermeture <br>
          </div>
        </div>
      </div>
    </blockquote>
    Correct pour le moment.<br>
    <blockquote type="cite"
cite="mid:CAGa7JC0mGjiKRX1ttLwd8s=P111B1oDEqNEVX+y7UktGQzUrzQ@mail.gmail.com">
      <div dir="ltr">
        <div class="gmail_quote">
          <div>- "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</div>
          <div>- "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)</div>
          <div>- "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)</div>
        </div>
      </div>
    </blockquote>
    <p>La virgule est aussi utilisée pour les énumérations d'années,
      mois, jours de la semaines, etc... (eg. 'Mo,We,Fr 08:00-18:00').
      (cf. les définitions de weekday_sequence, monthday_selector et
      year_selector)</p>
    <p>Normalement, cette règle devrait prendre précédence sur les
      précédentes si elle s'applique. Ça n'a pas trop de sens car c'est
      fermé par défaut. C'est pour ça que si la règle définit une
      fermeture, celle ci se content de supprimer la plage horaire. Donc
      pour '08:00-18:00; Mo 08:00-12:00 off', c'est ouvert le Lundi de
      midi à 18h. (cf. l'explication de <rule_modifier> (closed) )<br>
    </p>
    <p>C'est pour ça qu'il y a un point-virgule et non une virgule. Car
      le comportement est le même et l'outil d'évaluation préfère le
      premier (car il est moins complexe je suppose).<br>
    </p>
    <blockquote type="cite"
cite="mid:CAGa7JC0mGjiKRX1ttLwd8s=P111B1oDEqNEVX+y7UktGQzUrzQ@mail.gmail.com">
      <div dir="ltr">
        <div class="gmail_quote">
          <div>- "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)</div>
          <div>- etc. (autres plages horaires ajoutées pour d'autres
            dates)</div>
          <div><br>
          </div>
        </div>
      </div>
    </blockquote>
    Elle s'applique pour les dimanches fériés car c'est la dernière qui
    correspond et on utilise des virgules.<br>
    <blockquote type="cite"
cite="mid:CAGa7JC0mGjiKRX1ttLwd8s=P111B1oDEqNEVX+y7UktGQzUrzQ@mail.gmail.com">
      <div dir="ltr">
        <div class="gmail_quote">
          <div>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.</div>
          <div><br>
          </div>
          <div>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".</div>
          <div><br>
          </div>
          <div>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.</div>
        </div>
      </div>
    </blockquote>
    Il ne forment un "ou" que si on utilise des virgules.<br>
    <blockquote type="cite"
cite="mid:CAGa7JC0mGjiKRX1ttLwd8s=P111B1oDEqNEVX+y7UktGQzUrzQ@mail.gmail.com">
      <div dir="ltr">
        <div class="gmail_quote">
          <div>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).</div>
          <div><br>
          </div>
          <div>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é.</div>
          <div><br>
          </div>
          <div>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ë</div>
          <div><br>
          </div>
          <div>Mais dans l'état actuel il faut éviter d'avoir une
            alternance de "on" à "off", puis à nouveau à "on".</div>
        </div>
      </div>
    </blockquote>
    Pour faire simple, la spécification n’interprète pas les valeurs de
    cette manière.<br>
    <p><br>
      > plus besoin de virgule (encore moins le "|" inutile)</p>
    <p>J'ai pas très envie d'expliquer. C'est détaillé dans
      l'explication de fallback_rule_separator. Si on parle bien du "||"</p>
    <p>Megan.<br>
    </p>
  </body>
</html>