J'ai une chaîne Markdown en JavaScript et j'aimerais l'afficher (avec des caractères gras, etc.) dans un afficheur de style less
(ou, je suppose, more
) pour la ligne de commande.
Par exemple, avec une chaîne
"hello\n" +
"_____\n" +
"*world*!"
Je voudrais avoir une sortie pop-up avec un contenu défilable qui ressemble à
bonjour
monde
Est-ce possible, et si oui comment?
Pandoc peut convertir Markdown en pages de manuel groff.
Ceci (grâce au commentaire de nenopera):
pandoc -s -f markdown -t man foo.md | man -l -
devrait faire l'affaire. L'option -s
lui indique de générer les en-têtes et les pieds de page appropriés.
Il peut y avoir d'autres convertisseurs markdown-to-roff; Il se trouve que Pandoc est le premier que j'ai trouvé.
Une autre alternative est la commande markdown
(apt-get install markdown
sur les systèmes Debian), qui convertit Markdown en HTML. Par exemple:
markdown README.md | lynx -stdin
(en supposant que vous ayez le navigateur Web lynx
basé sur un terminal).
Ou (grâce à la suggestion de Danny), vous pouvez faire quelque chose comme ceci:
markdown README.md > README.html && xdg-open README.html
où xdg-open
(sur certains systèmes) ouvre le fichier ou l'URL spécifié dans l'application préférée. Ceci ouvrira probablement README.html
dans votre navigateur Web graphique préféré (ce qui n’est pas exactement "moins de style", mais cela pourrait être utile).
J'ai essayé d'écrire ceci dans un commentaire ci-dessus, mais je ne pouvais pas formater mon bloc de code correctement. Pour écrire un «filtre moins», essayez, par exemple, d’enregistrer ce qui suit sous le nom ~/.lessfilter
:
#!/bin/sh
case "$1" in
*.md)
extension-handler "$1"
pandoc -s -f markdown -t man "$1"|groff -T utf8 -man -
;;
*)
# We don't handle this format.
exit 1
esac
# No further processing by lesspipe necessary
exit 0
Ensuite, vous pouvez taper less FILENAME.md
et il sera formaté comme une page de manuel.
Si vous êtes dans colors, cela vaut peut-être aussi la peine de vérifier:
Il peut également être utilisé directement dans d’autres programmes ou modules Python.
Et il a un lot de styles, comme plus de 200 pour le démarquage et le code qui peut être combiné.
C'est joli alpha il y a peut-être encore des bugs
J'en suis l'auteur, peut-être que certaines personnes l'aiment ;-)
Une alternative totalement différente est fou . C'est un script Shell que je viens de découvrir. Il est très facile à installer et rend bien le démarquage dans une console.
J'ai écrit quelques fonctions basées sur la réponse de Keith :
mdt() {
markdown "$*" | lynx -stdin
}
mdb() {
local TMPFILE=$(mktemp)
markdown "$*" > $TMPFILE && ( xdg-open $TMPFILE > /dev/null 2>&1 & )
}
Si vous utilisez zsh
, placez simplement ces deux fonctions dans ~/.zshrc
puis appelez-les depuis votre terminal, comme suit:
mdt README.md
mdb README.md
"t" est pour "terminal", "b" est pour navigateur.
Sous OSX, je préfère utiliser cette commande
brew install pandoc
pandoc -s -f markdown -t man README.md | groff -T utf8 -man | less
Convertissez markupm, formatez le document avec groff et effectuez un pipe en moins
crédit: http://blog.metamatt.com/blog/2013/01/09/previewing-markdown-files-from-the-terminal/
Personnellement, j'utilise ce script:
#!/bin/bash
id=$(uuidgen | cut -c -8)
markdown $1 > /tmp/md-$id
google-chrome --app=file:///tmp/md-$id
Il restitue le balisage en HTML, le place dans un fichier dans /tmp/md-...
et l'ouvre dans une session chromée de kiosque sans barre d'URI, etc. Nécessite un démarquage et Google Chrome. Le chrome devrait également fonctionner, mais vous devez remplacer la dernière ligne par
chromium-browser --app=file:///tmp/md-$id
Si vous voulez en savoir plus, vous pouvez utiliser des CSS pour le rendre agréable. J'ai édité le script et je lui ai fait utiliser Bootstrap3 (overkill) depuis un CDN.
#!/bin/bash
id=$(uuidgen | cut -c -8)
markdown $1 > /tmp/md-$id
sed -i "1i <html><head><style>body{padding:24px;}</style><link rel=\"stylesheet\" type=\"text/css\" href=\"http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css\"></head><body>" /tmp/md-$id
echo "</body>" >> /tmp/md-$id
google-chrome --app=file:///tmp/md-$id > /dev/null 2>&1 &
Je posterai ma page unix répondra ici aussi:
Un visualiseur de démarque de ligne de commande IMHO fortement sous-estimé est le markdown-cli .
npm install markdown-cli --global
markdown-cli <file>
Probablement pas remarqué beaucoup, car il manque toute documentation ...
Mais pour autant que je puisse comprendre par quelques exemples de fichiers de démarques, certaines choses qui m'ont convaincu:
J'ai réalisé les problèmes suivants
alias mdless='_mdless() { if [ -n "$1" ] ; then if [ -f "$1" ] ; then cat <(echo ".TH $1 7 `date --iso-8601` Dr.Beco Markdown") <(pandoc -t man $1) | groff -K utf8 -t -T utf8 -man 2>/dev/null | less ; fi ; fi ;}; _mdless '
alias mdless='...'
: crée un alias pour mdless
_mdless() {...};
: crée une fonction temporaire à appeler par la suite_mdless
: à la fin, appelez-le (la fonction ci-dessus)À l'intérieur de la fonction:
if [ -n "$1" ] ; then
: si le premier argument n'est pas nul, alors ...if [ -f "$1" ] ; then
: aussi, si le fichier existe et est régulier, alors ...cat arg1 arg2 | groff
...: cat envoie ces deux arguments concaténés à groff; les arguments étant: <(echo ".TH $1 7
date --iso-8601Dr.Beco Markdown")
: quelque chose qui démarre le fichier et que groff
comprendra comme notes d'en-tête et de pied de page. Ceci remplace l'en-tête vide de la clé -s
dans pandoc
.<(pandoc -t man $1)
: le fichier lui-même, filtré par pandoc
, générant le style man
du fichier $1
| groff -K utf8 -t -T utf8 -man 2>/dev/null
: piping le fichier concaténé résultant à groff
: -K utf8
donc groff
comprend le code du fichier d'entrée-t
pour qu'il affiche correctement les tables dans le fichier-T utf8
afin qu'il affiche le bon format-man
utilise donc la macroMACROpour afficher le fichier au format man
2>/dev/null
pour ignorer les erreurs (après tout, c'est un fichier brut qui est transformé manuellement, nous ne nous en soucions pas tant que nous pouvons voir le fichier dans un format pas trop laid).| less
: Enfin, montre le fichier paginant avec less
(j'ai essayé d'éviter ce tuyau en utilisant groffer
au lieu de groff
, mais groffer
n'est pas aussi robuste que less
et certains fichiers le bloque ou ne le montre pas du tout. ça passe dans une autre pipe, que diable!Ajoutez-le à votre ~/.bash_aliases
(ou similaire)