Utiliser Zmarkdown en PHP

a marqué ce sujet comme résolu.

Bonjour,

Je souhaite adapter un script PHP pour qu’il utilise le formatage de Zmarkdown au lieu de Markdown classique. Étant donné que c’est du JS, mais je crains que ceux qui vont afficher la page ne vont pas apprécier (surtout les téléphones). Utiliser Node.js, sur mon mutualisé non plus. J’ai pensé porter Zmarkdown en PHP, mais ça me semble énorme. Voyez-vous une solution ?

+0 -0

Tu pourrais héberger Zmarkdown ailleurs (y’a des fournisseurs gratuits ou pas chers pour des petites apps Node.js).

Porter en PHP c’est un sacré chantier, effectivement. Et beaucoup de maintenance derrière…

Quant à l’utiliser dans le navigateur, faut voir les dépendances et les performances. À voir le package.json j’ai l’impression qu’il n’y a pas de dépendances donc ça pourrait être facilement utilisable. Faut juste voir ton usage et comment ça jouera avec les performance…

Salut,

Il existe quelques implémentations de Markdown en PHP. Pour ma part, j’utilise plutôt Parsedown qui est très populaire. Comme il se présente sous la forme d’une classe, il ne restera alors « plus qu’à » créer une sous-classe et surcharger les méthodes text() et (ou ?) line() pour ajouter les fonctionnalités manquantes de Zmarkdown :)

+0 -0

Largement faisable côté client, faut juste un expert webpack ou rollup ou autre pour créer un bon bundle.

Pour ton usage c’est probablement mieux que l’utiliser comme service http. Aucun problème sur un téléphone.

+2 -0

Salut,

Il existe quelques implémentations de Markdown en PHP. Pour ma part, j’utilise plutôt Parsedown qui est très populaire. Comme il se présente sous la forme d’une classe, il ne restera alors « plus qu’à » créer une sous-classe et surcharger les méthodes text() et (ou ?) line() pour ajouter les fonctionnalités manquantes de Zmarkdown :)

Jérôme Deuchnord

Je pensais faire ça, mais bon le parsing c’est pas ma spécialité !

Édit : j’ai réussi, péniblement, à mettre en place les smileys. Si j’ouvre un git, vous êtes chaud pour m’aider a créer "ZParsedown" c’est à dire l’adaptation de ZMarkdown à la class parsedown ?

+0 -0

Ça pourrait vous prendre quelques années, qwerty. C’est beaucoup de boulot. Je vous souhaite que Parsedown ait déjà plein de tooling pour vous aider, aussi.

Les smileys c’est peut-être le module zmarkdown le plus simple, il te permet pas de savoir s’il est possible d’implémenter zmarkdown avec la lib markdown utilisée. Essaie d’implémenter les ABBR, ça devrait mieux te renseigner sur la possibilité ou non de ton projet.

Sinon ouais, comme je disais le mieux dans ton cas c’est côté client.

+1 -0

En effet, j’ai regardé, et bien que Parsedown implante plein de trucs (dont les abréviations), il n’implante pas (en gras, ce qui me semble a priori important) :

  • l’alignement au centre ou à droite ;
  • la syntaxe supérieure et inférieure ;
  • l’autolink des adresses mails (syntaxe différente) ;
  • les tableaux complexes ;
  • le formatage mathématique ;
  • l’affichage des vidéos ;
  • la touche clavier ;
  • les blocs ;
  • les commentaires ;
  • les smileys ;
  • l’affichage complexe du code ;
  • le Source: des citations (la balise cite en HTML) ;

Au final, pour quelques trucs, suffit de modifier la syntaxe. Pour le reste, ça risque d’être un peu plus dur. Sinon, question, c’est possible de faire ZMarkdown –> Markdown (Extra ?) avec Pandoc ou autre ?

+0 -0

Existe-t-il un hook (pas sûr du terme) Pandoc, pour convertir vers un markdown plus standard le ZMarkdown ? Ca pourrait être une solution à mon problème.

+0 -0

Pandoc pour convertir vers un markdown plus standard le ZMarkdown ?

Pour convertir quoi ? Et pourquoi Pandoc ?

[edit] Je crois qu’il va falloir un exemple d’entrée et sortie parce que je comprends vraiment pas ce que tu veux faire, ni pourquoi subitement ça parle de pandoc. :D

[edit^2] Je persiste à penser que la bonne solution à ton problème est d’utiliser zmarkdown.

+0 -0

En regardant ce qui a été fait pour Zest-Writer, je crois comprendre : il faut « compiler le javascript » (le bundle). De là, j’inclus le script, et je fais un truc du genre :

1
2
3
4
var render = document.getElementById('render')
render.innerHTML = (ZMarkdown(render))

`

C’est ça ?

+0 -0

ZMarkdown en JS côté client. Je partirais donc sur le code de démo qui a été fait, donc ?

qwerty

Je te recommande pas, non. C’était vraiment une demo, un prototype, un truc dégueu juste pour prouver que c’est faisable.

En regardant ce qui a été fait pour Zest-Writer, je crois comprendre : il faut « compiler le javascript » (le bundle). De là, j’inclus le script, et je fais un truc du genre :

1
2
3
4
var render = document.getElementById('render')
render.innerHTML = (ZMarkdown(render))

`

C’est ça ?

Environ. C’est quand même assez différent parce que Zeste-Writer n’utilise pas de navigateur. Si tu veux faire le rendu au fur et à mesure que l’utilisateur tape du markdown, ce bout de code ne fonctionnera pas, par exemple.

Je t’adapte ce paragraphe pour que tu comprennes bien : https://zestedesavoir.com/forums/sujet/5354/zest-writer-un-editeur-hors-ligne-pour-vos-contenus-zds/?page=34#p178528

La différence entre node et un browser, c’est que node est un framework et un runtime spécifique. Aucun browser ne contient déjà le framework, et tous ne supportent pas les mêmes versions de JS. Il faut donc faire en sorte de compiler zmarkdown du JS moderne utilisant le framework node vers du plus vieux JS n’utilisant pas le framework node et tournant potentiellement sur tous les navigateurs.

+0 -0

Je vais expliquer le contexte : j’ai un wiki, écrit avec la syntaxe ZMarkdown. Je veux simplement que le visiteur voit le résultat parsé. Pas besoin de résultat en live pendant la rédaction ou autre. Juste convertir du markdown vers du HTML pour le lecteur (et non pas le rédacteur).

Comment donc compiler ZMarkdown et l’adapter à mon cas ?

+0 -0

Il y a plein d’options, les 2 principales sont :

  • Le markdown étant rédigé dans un navigateur, le transformer en HTML dans le navigateur et sauver en base de donnée le markdown et l’HTML correspondant. Faire le rendu en live serait vraiment une très mauvaise idée.
  • Le markdown rédigé dans le navigateur est converti en HTML par un serveur zmarkdown, ce qui te permet de faire ça depuis le client ou depuis ton serveur ou n’importe où ailleurs. Attention : sauve le HTML résultant dans ta base de donnée.
+4 -0

Une recherche pour ansi_up dans le repo zmarkdown donne comme seul résultat le fichier public/ansi_up.js, du coup j’imagine que tu parles de celui-là. Une recherche pour ansi_up sur google donne cette librairie, qui possède du code qui ressemble étrangement à celui du fichier public/ansi_up.js. Du coup, la description de la librairie devrait pouvoir aider à comprendre le but du fichier ansi_up :

A javascript library that converts text with ANSI terminal codes into colorful HTML

Si je devais deviner, je dirais que la librairie qui colorie le code dans les balises de code utilise les codes ANSI, et donc ansi_up est utilisé pour convertir ça en HTML.

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