305462_fr

AIDE : Topoguide - L# : balise de description des longueurs

1 Like
V5 statut des différentes syntaxes

Conventions

  • N ou M nombre entier
  • label texte alpha-numerique (pas un nombre)
  • _!=~ caractère underscore, point d’esclamation, egal, tilde
  • DifficultĂ©s : De 1 = très facile, Ă  4 = prise de tète Ă  flinguer 10 cafetières. Ressenti par moi-mĂŞme.

Doc

Liste

# Balise Statut Diff Freq Description RE
1 L# ok 1 13830 auto-incrémentation L#
2 L#N nok 1 616 longueur numero N L#\d+
3 L#+N nok 2 108 rajouter N au dernier numero L#\+\d+
4 L#-N nok 2 159 groupe de longueur, du dernier numero+1 Ă  N L#\-\d+
5 L#-+N nok 2 525 groupe de longueur, du dernier numero+1 Ă  dernier numero +N+1 L#\-\+\d+
6 L#+N-+M nok 2 10 groupe de longueur, du dernier numero+N Ă  dernier numero +N+M L#\+\d+\-\+\d+
7 L#-N-+M nok 2 76 groupe de longueur, du dernier numero-N Ă  dernier numero -N+M L#\-\d+\-\+\d+
8 L#label nok 3 1458 dernier numéro auquel on rajoute *label* (genre L3bis). Ca créé une numérotation bis. Si on utilise un *label2*, ca recrée une numérotation ter à partir du dernier numéro de la numérotation principale \nL#[^\d\-\+\!\_\:\|\s\n]
9 L#_ nok 3 710 revenir à la numérotation principale L#\_
10 L#! nok 4 65 référence pour change le point de démarrage d'une numérotation bis L#\!
11 L#~ nok 1 662 ligne pleine pour mettre des commentaires L#\~
12 L#= nok 1 136 ligne de titre L#\=
13 |: nok 3 1014 différent séparateur : tout groupe de ":" ou "|" est un séparateur de cellule. Le fait d'autoriser deux ou plus est compliqué à gerer. [\|\:]{2,}
14 \n nok 4 738 Retour Ă  la ligne dans les cellules. Une des pire plaie Ă  gerer... \n([LR])#([^\n]+)\n([^RL\n][^#\n][^\n]+)\n([LR])#
15 L# desc ok 1 292 mention du numéro de la longueur dans une cellule [^\n]L#\d?
16 L#xxx desc nok 3 246 mention du numéro de la longueur dans une cellule, modifiée par les options xxx [^\n]L#[^\d \:\|]
17 R# desc ok 1 356 mention du numéro du relai dans une cellule [^\n]R#\d?
18 R#xxx desc nok 3 164 mention du numéro du relai dans une cellule, modifiée par les options xxx [^\n]R#[^\d \:\|]
19 R# nok 2 704 numérotation à part pour la ligne de rappel. Ca fonctionne à moitié : le 1er R# continue la numérotation s'il est après les longueurs, mais ça fonctionne s'il est avant (le 1er L# commence bien à L1). R#

[details=Proposition finalemement retenue]

Travail en cours

Proposition de spécification de la balise L# V6

Rationnel

Suite au passage de la V6, il est apparau que la syntaxe L# posait un gros probleme de migration. Principalement à cause de sa complexité, il n’existe aujourdhui aucune solution réalisable pour la réimplementer (manque de budget, aucun développeur compétent sur le sujet)
Par ailleurs, plusieurs voies se sont élevées pour dénoncer sa complexité à l’utilisation. Néanmoins, des contributeurs expérimentés, ainsi que les modérateurs topoguide notent la grande aide qu’offre l’auto-numérotation lors de la maintenance.

Dans ce contexte, voici une proposition de L# V6 décrivant les fonctionnalités, les équivalences et un plan chiffré pour cette migration.

Notez que l’esprit de cette proposition est le suivant :

  • garder un système aussi simple que possible pour le rendu de la balise afin de
    • retrouver au plus vite des topo lisibles et Ă©ditables
    • garantir la pĂ©rĂ©nitĂ© du rendu dans le temps, et pour les futures versions de camptocamp
  • dĂ©placer la complexitĂ© de l’auto-numĂ©rotation au niveau d’un outil d’aide Ă  l’édition afin de rĂ©pondre aux besoins des contributeurs expĂ©rimentĂ©s et des modĂ©rateurs.

Syntaxe

Balise

Une balise L# sera composé du code suivant :

prefix#pattern[spaces][|cell_content]
  • prefix sera un L majuscule ou un R majuscule
  • pattern sera la plus longue chaĂ®ne de caractère possible suivant le # ne contenant ni espace, ni retour Ă  la ligne, ni pipe (|).
  • [spaces] sera 0 Ă  N caractères « espace » (32 en ASCII)
  • [|cell_content] sera le caractère « pipe » suivi de cell_content. cell_content sera la plus grande chaĂ®ne de caractère possible sans pipe ni retour Ă  la ligne. Ce dernier motif sera rĂ©pĂ©tĂ© autant de fois que nĂ©cessaire. cell_content pourra ĂŞtre vide.

Interprétation

DĂ©but de ligne
  • Elle sera interprĂ©tĂ©e comme une ligne de tableau.
  • Si elle est prĂ©cĂ©dĂ©e d’une autre ligne de tableau avec le meme prefix, elle sera rajoutĂ©e Ă  ce tableau
    • Sinon elle commence un nouveau tableau
  • Au sein de cette ligne, le caractère pipe | sera interprĂ©tĂ© comme sĂ©parateur de cellule
  • Le # de la balise ne sera pas affichĂ©, le pattern sera affichĂ© tel qel.
  • Si pattern est le signe =, alors la ligne est une ligne de titre
  • Si pattern est le signe ~, alors la ligne est une ligne pleine (ligne de commentaire)
  • Si pattern est vide (uniquement prefix#), alors un auto-incrĂ©mentation simple sera effectuĂ©e sur le principe suivant :
    • Tous le document ne doit contenir que des prefix# simples (ou ligne de titre ou ligne de commentaire). Dans le cas contraire : erreur.
    • Au sein d’un meme document, chaque prefix conserve son auto-numeroation (cas de deux tableaux)
    • => cettte auto-implĂ©mentation simple couvre 90% des cas actuels, et est dĂ©jĂ  casi-implĂ©mentĂ©e.
Au sein d’une ligne
  • Le # de la balise ne sera pas affichĂ©, le pattern sera affichĂ© tel qel.
  • Dans le cas de l’auto-numĂ©rotation, on reprend le chiffre courant.
  • Pas d’autre modification

Outil d’aide à l’édition

Cette outil devra permettre d’aider la renuméroation des voies longues. Il sera coté client, et adressera les cas les plus courant.
Néanmoins, la charge de vérification du résultat sera à la charge du contributeur.

Différence avec la V5

  • A part le cas simple, toute la logique d’auto-numĂ©rotation est supprimĂ©e.
  • Le sĂ©parateur sera obligatoirement un unique pipe (au lieu de un ou plusieurs pipe/deux points)
  • Les retours Ă  la lignes ne sont plus possible au sein d’un cellule, mais un <br> est bien interprĂ©tĂ© comme retour Ă  la ligne

Les deux derniers points sont motivés par le fait que leur implémentation est complexe, pour un apport fonctionnel très faible. Par ailleurs, l’utilisation du : dans le texte rend la syntaxe compliquée à lire si on utilise :: en séparateur de colonne, on gardera donc un simple pipe, caractère presque jamais utilisée en langue écrite.

Plan de migration

Pricing

  • Codage de la nouvelle syntaxe : 2 jours de dev (seule la gĂ©nĂ©ricitĂ© du pattern est Ă  faire, le reste est deja implĂ©mentĂ©)
  • Migration de l’existant :
    • 2 jours de dev
    • Par ailleurs, il sera demandĂ© une aide manuelle pour quelques centaines de documents qui intègre une syntaxe non prĂ©vue par CampUI
  • Outil d’aide Ă  l’édition : Ă  voir dans un second temps
    • mais je ne vous cache pas que ca sera aussi compliquĂ© que les balises L# V5, voir plus…
    • Et que nous n’avons pas les moyens aujourdh’ui de le faire!
    • … Mais par ailleurs, la mission d’une aide n’est pas critique. En manquer, ou avoir de la complexitĂ© Ă  ce niveau ne met pas camptocamp en danger. Et on est pas obligĂ© d’adresser tous les cas…

DĂ©tail du plan de migration

En cours de reflexion, notamment pour une petite partie des spec qui seront contradictoires

  • ImplĂ©mentation d’un marqueur __V6__ : signale que le document est migrĂ© et doit etre interprĂ©tĂ© avec le nouveau parseur
    • afin de se simplifier la vie de la migration
    • une fois qu’un doc le contient, il ne peut plus revenir en arrière
  • Codage du nouveau parseur
  • A l’aide d’un robot Ă  partir des script javascript de CampUI. Un robot fera le gros du boulot :
    • Changer les syntaxes compatibles :
      • Changer les sĂ©parateurs multiple ou : en un pipe unique : facile, ~1000 documents
      • Remplacer les retours Ă  la lignes des cellule par des <br> : facile, ~1000 documents
    • Pour tous les documents contenant des pattern complexes (autre que L#, L#= et L#~)
      • Remplacer les dĂ©buts de lignes complexes par leurs valeurs interprĂ©tĂ©es : compliquĂ©, plusieurs milliers de documents
      • Remplacer les mentions L# au sein des cellules : compliquĂ©, quelques centaines de docuements
      • et rajouter __V6__
  • Supression du marqueur __V6__[/details]
1 Like
Proposition finalement non retenue

Proposition #2

Actuellement supportée

  • :white_check_mark: L#

A recoder

Lot 1 : facile

  • :white_check_mark: L#~
  • :white_check_mark: L#=
  • :white_check_mark: R#

Lot 2 : moyen

  • :white_check_mark: L#N
  • L#+
  • L#+N
  • L#-+N
  • L#+N-+M
  • L#-N-+M

Lot 3 : compliqué

  • :white_check_mark: L#label
  • L#_
  • L#!
  • :white_check_mark: R# desc
  • :white_check_mark: L# desc
  • :white_check_mark: L#xxx desc
  • :white_check_mark: R#xxx desc
  • Tous les cas du lot 2, suivi d’un label :
    • :white_check_mark: L#Nlabel
    • L#+label
    • L#+Nlabel
    • L#-+Nlabel
    • L#+N-+Mlabel
    • L#-N-+Mlabel
    • :white_check_mark: R#label

A modifier

  • :white_check_mark: |: Ne permettre que le pipe, et un pipe est une cellule (ne pas autoriser plusieur pipe consĂ©cutifs, ou plusieurs : consĂ©cutifs).
  • Rationnel du changement :
    • aucune perte fonctionnelle
    • lĂ©gère perte de confort pour ceux qui aiment les : ou les double pipe
    • beaucoup beaucoup plus simple Ă  coder
  • le robot s’occupera du virer les double pipe et les :

A supprimer

  • \n ne pas permettre de routour Ă  la ligne dans une cellule, mais autoriser <br>
    • Rationnel du changement :
      • aucune perte fonctionnelle
      • perte de confort pour le contributeur (encore que…)
      • infiniment plus simple Ă  coder, ce truc est Ă  s’arracher les cheveux sur la tete.
    • Le robot s’occupera de remplacer ces retours Ă  la ligne (ou supprimer si <br> n’est pas dispo).
  • L#-N
    • Rationnel du changement :
      • mĂ©lange numĂ©rotation auto et numĂ©rotation fixe. On perd l’avantage de l’autonumĂ©rotation, autant utiliser L#-+N
    • Il faudra faire la migration Ă  la main (159 documents)
  • A noter :

    • A partir du moment, ou on garde le principe d’auto-numĂ©rotation, il faut garder tout ce que j’ai mis en A recoder. Autrement, des use-cases ne sont pas faisable.
    • Sauf le double pipe ou le double :, pas de diffĂ©rence d’interprĂ©tation avec la V5 (soit c’est interprĂ©tĂ© pareil, soit c’est pas interprĂ©tĂ©. Ce n’etait pas le cas de ma première proposition).

    Voir L# - Prise de décision (vote)

    Bis = Variante

    Les itinéraires « Bis » sont des itinéraires alternatifs.

    La notion de longueur bis est souvent mal comprise. Une longueur bis n’est pas une longueur supplémentaire.

    L3bis signifie : variante de L3.

    Pour insérer une longueur supplémentaire (marche, raccord, liaison, transition) : employer le suffixe « tilde » (L#~) suivi du texte descriptif.

    En effet, je croise bcp d’usage de suffixe pour décrire une longueur de marche.

    J’ai complété l’aide pour préciser ce point : Camptocamp.org

    1 Like

    J’ai complété l’aide en anglais

    merci :slight_smile: