tutorial run proyecto node crear app node.js bash unix markdown less-unix

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 para mdless
  • _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-8601 Dr.Beco Markdown") : algo que inicia el archivo y groff lo entenderá como las notas de encabezado y pie de página. Esto sustituye el encabezado vacío de la tecla -s en pandoc .
    • arg2: <(pandoc -t man $1) : el archivo en sí, filtrado por pandoc , que genera el estilo de archivo del man $1
  • | 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 a groff :
    • -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 de man
    • 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 con less (he tratado de evitar esta tubería usando groffer lugar de groff , pero groffer no es tan robusto como less 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:

terminal_markdown_viewer

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.



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