node.js - run - Visor de reducción de estilo para sistemas UNIX
require('' express '') in node js (9)
Tengo una cadena Markdown en JavaScript, y me gustaría mostrarla (con negrita, etc.) en un visor less
(o, supongo, more
) estilo para la línea de comando.
Por ejemplo, con una cuerda
"hello/n" +
"_____/n" +
"*world*!"
Me gustaría tener una salida emergente con contenido desplazable que se parece a
Hola
mundo
¿Es posible? y si lo es, cómo?
Este es un alias que encapsula una función:
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 ''
Explicación
-
alias mdless=''...''
: crea un alias paramdless
-
_mdless() {...};
: crea una función temporal que se llamará después -
_mdless
: al final, llámalo (la función anterior)
Dentro de la función:
-
if [ -n "$1" ] ; then
if [ -n "$1" ] ; then
: si el primer argumento no es nulo, entonces ... -
if [ -f "$1" ] ; then
if [ -f "$1" ] ; then
: también, si el archivo existe y es regular, entonces ... -
cat arg1 arg2 | groff
cat arg1 arg2 | groff
...: cat envía estos dos argumentos concatenadas a groff; los argumentos son:- arg1:
<(echo ".TH $1 7
date --iso-8601Dr.Beco Markdown")
: algo que inicia el archivo ygroff
lo entenderá como las notas de encabezado y pie de página. Esto sustituye el encabezado vacío de la tecla-s
enpandoc
. - arg2:
<(pandoc -t man $1)
: el archivo en sí, filtrado porpandoc
, que genera el estilo de archivo delman
$1
- arg1:
-
| groff -K utf8 -t -T utf8 -man 2>/dev/null
| groff -K utf8 -t -T utf8 -man 2>/dev/null
: conectando el archivo concatenado resultante agroff
:-
-K utf8
asígroff
entiende el código de archivo de entrada -
-t
para que muestre correctamente las tablas en el archivo -
-T utf8
por lo que sale en el formato correcto -
-man
entonces usa el paquete MACRO para generar el archivo en formato deman
-
2>/dev/null
para ignorar los errores (después de todo, se trata de un archivo sin procesar que se transforma manualmente en el hombre, no nos importan los errores, siempre que podamos ver el archivo en un formato no tan feo) .
-
-
| less
| less
: finalmente, muestra el archivo pagitándolo conless
(he tratado de evitar esta tubería usandogroffer
lugar degroff
, perogroffer
no es tan robusto comoless
y algunos archivos lo cuelgan o no se muestran en absoluto. pasa por una tubería más, ¡qué diablos!
Añádelo a tus ~/.bash_aliases
(o similares)
Escribí un par de funciones basadas en la respuesta de Keith :
mdt() {
markdown "$*" | lynx -stdin
}
mdb() {
local TMPFILE=$(mktemp)
markdown "$*" > $TMPFILE && ( xdg-open $TMPFILE > /dev/null 2>&1 & )
}
Si está usando zsh
, simplemente coloque esas dos funciones en ~/.zshrc
y luego ~/.zshrc
desde su terminal como
mdt README.md
mdb README.md
"t" es para "terminal", "b" es para navegador.
Si le gustan los colores , quizás también valga la pena verificarlo:
También se puede usar directamente desde otros programas o módulos de Python.
Y tiene muchos estilos, como más de 200 para el descuento y el código que se pueden combinar.
Renuncia
Es bastante alfa, puede haber todavía errores
Soy el autor, quizás a algunas personas les guste ;-)
Traté de escribir esto en un comentario anterior, pero no pude formatear mi bloque de código correctamente. Para escribir un ''filtro menos'', intente, por ejemplo, guardar lo siguiente como ~/.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
Luego, puede escribir less FILENAME.md
y se formateará como una página de manual.
Una alternativa totalmente diferente es mad . Es un script de shell que acabo de descubrir. Es muy fácil de instalar y hace bastante bien el descuento en una consola.
Utilizando OSX prefiero usar este comando
brew install pandoc
pandoc -s -f markdown -t man README.md | groff -T utf8 -man | less
Convertir markupm, formatear documento con groff y pipe en less
crédito: http://blog.metamatt.com/blog/2013/01/09/previewing-markdown-files-from-the-terminal/
Yo personalmente uso este script:
#!/bin/bash
id=$(uuidgen | cut -c -8)
markdown $1 > /tmp/md-$id
google-chrome --app=file:///tmp/md-$id
Hace el descuento en HTML, lo pone en un archivo en /tmp/md-...
y lo abre en una sesión de kiosco de cromo sin barra URI, etc. Simplemente pasa el archivo md como argumento o lo canaliza en stdin . Requiere rebaja y Google Chrome. El cromo también debería funcionar, pero debes reemplazar la última línea con
chromium-browser --app=file:///tmp/md-$id
Si quieres ser elegante, puedes usar CSS para que se vea bien, edité el script y lo hice usar Bootstrap3 (overkill) desde 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 &
Pandoc puede convertir Markdown en páginas groff man.
Esto (gracias al comentario de nenopera):
pandoc -s -f markdown -t man foo.md | man -l -
debería hacer el truco. La opción -s
le dice que genere encabezados y pies de página adecuados.
Puede haber otros convertidores markdown-to-roff por ahí; Pandoc resulta ser el primero que encontré.
Otra alternativa es el comando markdown
( apt-get install markdown
en los sistemas Debian), que convierte Markdown en HTML. Por ejemplo:
markdown README.md | lynx -stdin
(suponiendo que tiene el navegador web basado en la terminal lynx
).
O (gracias a la sugerencia de Danny) puedes hacer algo como esto:
markdown README.md > README.html && xdg-open README.html
donde xdg-open
(en algunos sistemas) abre el archivo o URL especificado en la aplicación preferida. Esto probablemente abrirá README.html
en su navegador web GUI preferido (que no es exactamente "menos estilo", pero podría ser útil).
Voy a publicar mi respuesta de la página de Unix aquí, también:
Un IMHO subestimado en gran medida visor de línea de línea de comandos es el markdown-cli .
Instalación
npm install markdown-cli --global
Uso
markdown-cli <file>
Caracteristicas
Probablemente no se haya notado mucho, porque omite cualquier documentación ...
Pero por lo que pude deducir de algunos ejemplos de archivos de rebajas, algunas cosas que me convencieron:
- maneja mucho mejor los archivos mal formateados (de manera similar a atom, github, etc., por ejemplo, cuando faltan líneas en blanco antes de las listas)
- más estable con el formateo en encabezados o listas (texto en negrita en las listas rompe subcláusulas en algunos otros espectadores)
- formateo de tabla adecuado
- resaltado de sintaxis
- resuelve los enlaces a pie de página para mostrar el enlace en lugar del número de la nota al pie (no todos pueden desear esto)
Captura de pantalla
Inconvenientes
Me he dado cuenta de los siguientes problemas
- los bloques de código se aplanan (todos los espacios iniciales desaparecen)
- dos líneas en blanco aparecen antes de las listas