305462_fr
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
- http://fr.campdebase.org/article/305462 C’est l’article de camptocamp, mais l’interpretation est plus juste.
- https://github.com/cbeauchesne/campui/blob/master/app/static/campui/js/markdown.js Implementation en Javascript
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 decell_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 (uniquementprefix#
), 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.
- Tous le document ne doit contenir que des
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
- Changer les séparateurs multiple ou
- Pour tous les documents contenant des pattern complexes (autre que
L#
,L#=
etL#~
)- 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__
- Changer les syntaxes compatibles :
- Supression du marqueur
__V6__
[/details]
Proposition finalement non retenue
Proposition #2
Actuellement supportée
-
L#
A recoder
Lot 1 : facile
-
L#~
-
L#=
-
R#
Lot 2 : moyen
-
L#N
L#+
L#+N
L#-+N
L#+N-+M
L#-N-+M
Lot 3 : compliqué
-
L#label
L#_
L#!
-
R# desc
-
L# desc
-
L#xxx desc
-
R#xxx desc
- Tous les cas du lot 2, suivi d’un label :
-
L#Nlabel
L#+label
L#+Nlabel
L#-+Nlabel
L#+N-+Mlabel
L#-N-+Mlabel
-
R#label
-
A modifier
-
|:
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).
- Rationnel du changement :
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).
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
J’ai complété l’aide en anglais
merci