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:

    petits graphes des syntaxe valides V6 :

    Je mettrais à jour l’article plus tard