ZEP-05 : Refonte du traitement markdown pour l'export

a marqué ce sujet comme résolu.

Bon des nouvelles. On ne peut pas dire que la zep a avancé :( mais le markdown est ressorti de sa torpeur :).

Comme je l'avais annoncé lors du zest-meeting qui est arrivé en même temps que l'arrivé de nohar sur le projet, on a avancé. Pas grand chose d’exceptionnel pour le moment, on a simplement remis les tests en place et au vert (j'ai corrigé un bug sur les liens au passage). Ça nous a permit de faire une première release vers zds depuis très longtemps.

Là l'objectif est de consolider l'existant : Blinder de tests avant de faire n'importe quel modifications car le markdown a plein de cas particuliers un peu con. J'ai déjà commencé en rajoutant un tuto de zds en tant que test, faisant grimper la couverture de plus de 22% (on arrive aux 90%). Il va probablement nous falloir une très bonne couverture et surtout beaucoups de hits par lignes car on aura vite fait de casser des fonctionnalités. L'avantage c'est qu'on peut utiliser pleins de tutos de zds comme référence (au moins ceux en CC et avec accord de l'auteur).

Avec l'arrivée de nohar, on se review aussi mutuellement ce qui devrait améliorer un peu la qualité et j'ai fais le tri dans les vieux tickets et PR.

Une fois les tests blindés, l'étape suivante sera probablement de couper dans le code à la hache : L'upstream ne bouge pas beaucoup et on a besoin de faire des modifications du coeur pour y arriver. Mais pour cela il faut simplifier le code et on va donc virer tout ce qui est inutile pour nous.

Entre temps il est probable qu'on traite la PR sur les ping car elle bloque une autre zep. On reprendra ensuite les évolutions pour la zep-5 avec de meilleurs bases.

Voila pour les news coté markdown

Tiens ça fait une semaine que j'ai pas de données de nouvelles, je vais essayer de tenir ce rythme pour faire état de l’avancement. Tout comme la semaine dernière, je viens juste de préparer une nouvelle version du zmarkdown. Je vais aussi essayer de conserver ce rythme d'une version par semaine.

Quoi de neuf ?

Principalement de l'ajout de tests de nos extensions (on peut supposer que celles fournit l'étaient déjà). Actuellement l'idée est de prendre nos extensions une a une, de rajouter des tests, corriger le plus moche et régler les bugs connues liés. Sont concernés cette semaine :

  • Les liens (classique [..](..) et automatiques) où plusieurs bugs ont été réglés, en particulier des problèmes d'encodages qui cassaient les liens. De même pour la détection auto. Au passage les liens auto sont moins gourmand. Jusqu'à maintenant si un lien libre était mit en fin de phrase il englobait le point qui suivait, j'ai rajouté une exception pour cela et normalement cela devrait limiter les problèmes. (bugs liés : #46, #68 et #77)
  • Quand plusieurs alignements étaient mit dans le même message, le résultat était assez étrange et le rendu mauvais, c'est maintenant corrigé (bug #62)
  • JSFiddle : Comme discuté sur ce sujet, les jsfiddle non anonymes sont maintenant supportés.
  • Vidéo : Comme discuté sur ce sujet un ménage a été fait :

    • J'ai retiré le support de metacafe et veoh qui ne sont pas utilisés et ont des lecteurs s'intégrants très mal,
    • J'ai rajouté le support du lecteur vidéo de l'INA,
    • J'ai au passage corrigé un bug pour les liens youtube (#72)

La suite

A court terme on va continuer à corriger les bugs en testant indépendamment chaque extension. Rien de bien excitant à prévoir donc à court terme.

+5 -0

Petite semaine donc pas grand chose de neuf. J'ai été absent tout le long week-end, j'ai eu pas mal de taf et d'autres obligations plus urgentes lié à zds. Donc pas beaucoup de temps pour y toucher. Ce n'est donc pas une version révolutionnaire. J'ai tout de même envoyé une PR au site, histoire d'intégrer le maximum de correction de bugs du markdown dans la v19 qui ne tardera pas à être lancé.

Quoi de neuf ?

Principalement du ménage sur les "petites" extensions simples :

  • Commentaires,
  • texte rayé,
  • Les touches,
  • La mise en exposant,
  • La mise en indice.

Au passage j'ai corrigé un problème qui m'avait été reporté par Spacefox en dehors des tickets : les caractères ^ et ~ ne faisaient pas partie de ceux qui pouvaient être échappés. Du coup, dès que vous mettiez deux fois un de ces symbole dans le même paragraphe, il apparaissait une mise en indice ou exposant. Il est maintenant possible de les échapper (\^ et \~).

Il me semble qu'il y a le même soucis avec $, je le corrigerai quand je reprendrai cette extension.

La suite

Les extensions les plus simples ont maintenant été revus et sont bien testés. Celles qui restent demandent plus de travail. Le rythme va donc être plus ralenti.

Actuellement je commence par l'extension des grid_table appelé aussi Tableaux complexes. Ceux-ci ne sont pas forcément simple à dessiner mais sont les seuls à permettre un rendu complexe (fusion de cellule, blocs dans les cellules, etc.). La version actuel souffre de nombreux bugs et la fusion de cellules ne marchent presque jamais. Il s'agit d'un code récupéré sur le net, jamais maintenu et dont on a pas de correction. Il est beaucoup trop compliqué à mon gout, je suis donc globalement en train de le refaire entièrement. Mais il y a pas mal de subtilités à prendre en compte qui le rende pas simple à coder. J'espère pouvoir le finir pour la semaine prochaine.

D'ailleurs en parlant de tableaux et d'échappement, il me semble qu'il est impossible d'écrire le caractère | dans une case d'un tableau (simple au moins, complexe je n'ai pas testé). Je ne sais pas si il y a une solution (l'échappement ne fait rien) ou si c'est un bug …

Ça fait parti des choses que je comptais tester et garantir (tant que ton symbole ne provoque pas une ambiguïté). Dans l'idéal j'aimerai permettre aussi une certaine souplesse, que si tout le tableau n'est pas parfaitement aligné au caractère prêt, ça rende correctement tout de même. Mais on va voir ce qu'il est possible de faire.

Bonjour tout le monde.

Il n'y a pas eu de version mercredi dernier. La raison est un mixte entre très peu de temps libre et une ré-écriture de l'extension de tableau bien pénible. Mais ça avance. Aujourd'hui j'ai une version qui transforme bien tous les tableaux bien formés, quelques soient les fusions de cases demandés.

J'ai encore quelques soucis, en particulier ma version actuelle est un peu trop gourmande et je dois régler ces cas particuliers (pour permettre d'avoir des | dans les cases qui ne cassent pas tout si il n'y pas ambiguïté). D'ailleurs a court terme les tableaux ne seront pas souple. En fait la rigidité (=alignement strict des lignes/colonnes) permet de faire sauter des ambiguïté. Si j'autorisai une certaine souplesse dans l'alignement, il serait plus compliqué par exemple d'inclure le symbole | sans qu'il soit interprété comme participant au quadrillage du tableau.

ex :

1
2
3
4
5
6
7
+---+---+---+
| A | B | C |
+---+---+---+
| D | E | F |
+---+---+---+
| G | H | I |
+---+---+---+

Ici de façon logique le parseur va créer un tableau de 3x3 case. Mais que faire si on veut en réalité une seul case "pleine" sur la ligne 2 avec le symbole | dans le texte ? Une solution simple est d'ajouté un espace pour "casser" l'alignement et donc levé l’ambiguïté :

1
2
3
4
5
6
7
+---+---+----+
| A | B | C  |
+---+---+----+
| D  | E | F |
+---+---+----+
| G | H | I  |
+---+---+----+

Ici il n'y a plus ambiguïté : la deuxième ligne est constitué d'une unique cellule avec des | n'appartenant pas au tableau au milieu. Si l'analyse était souple ils seraient ici probablement ré-intégré ce qui complique la tache de celui qui veut les insérer.

Il y a en réalité une autre façon de faire pour levé l’ambiguïté :

1
2
3
4
5
6
7
8
+---+---+---+
| A | B | C |
+---+---+---+
| D | E | F |
|           |
+---+---+---+
| G | H | I |
+---+---+---+

Cependant je préfère attendre un peu pour bien réfléchir si il existe toujours d'autres solutions pour s'en sortir.


Je pense arreté de donner des mises a jour ici : Après tout ce sujet concerne la ZEP-5 et ces derniers temps je parle du parkdown de façon plus général. Je vais donc probablement faire un sujet a part (probablement dans "Vos projets") pour tout ce qui est lié au python-markdown. Je re-sortirai ce sujet quand les modifications pour l'export arriveront.

Le support des grid tables est terminé. La nouvelle extension a réduit d'environ 1/3 le nombre de lignes de codes utiles (donc pas la doc, lignes vides et commentaires), fonctionne correctement et est, je trouve, beaucoup plus simple et clair.

La suite des aventures du markdown va être sur un sujet a part. Je déterrerai ce sujet quand il sera question de gérer le support des pdf, ebook & co.

Comme proposé dans ZWriter, mais ça me semble plus pertinent ici, je propose l’implantation de CriticMarkup, notamment dans le fait de pouvoir annoter un texte. L’idée est d’aider dans la relecture, pratique pour des correcteurs ou un validateur.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte