command line - online - ¿Existe una utilidad de línea de comandos para representar Markdown con sabor a GitHub?
markdown tutorial (24)
Me pregunto si hay una utilidad de línea de comandos para tomar un archivo Markdown con sabor de GitHub y procesarlo en HTML.
Estoy usando un wiki de GitHub para crear contenido de sitio web. He clonado el repositorio en mi servidor y me gustaría procesarlo en HTML normal. Para mí es importante que lo que aparece en GitHub sea exactamente el aspecto que debería tener mi sitio web. También me gustaría usar los bloques cercados con ~~~
, así que prefiero no usar solo la sintaxis estándar de Markdown.
He visto un poco en la vista previa en vivo de JavaScript pensando que podría conectarlo a Node.js, pero dicen que está en desuso. He mirado el repositorio de redcarpet, pero no parece que tenga una interfaz de línea de comandos.
Sin embargo, presenté mi propia solución, ya que ninguna solución aquí es claramente mejor que las otras, dejaré la pregunta sin una respuesta seleccionada.
Adición tardía, pero showdownjs tiene una herramienta CLI que puede usar para analizar MD a HTML.
Al mejorar las respuestas de @ barry-stae y @Sandeep para los usuarios habituales de elinks, debe agregar lo siguiente a .bashrc:
function mdviewer() {
pandoc $* | elinks --force-html
}
No te olvides de instalar pandoc (y elinks).
Basándome en la respuesta de Jim Lim , instalé la gema Markdown de GitHub. Eso incluía un script llamado gfm que toma un nombre de archivo en la línea de comandos y escribe el HTML equivalente en la salida estándar. Lo modifiqué ligeramente para guardar el archivo en el disco y luego abrir el navegador estándar con launchy:
#!/usr/bin/env ruby
HELP = <<-help
Usage: gfm [--readme | --plaintext] [<file>]
Convert a GitHub-Flavored Markdown file to HTML and write to standard output.
With no <file> or when <file> is ''-'', read Markdown source text from standard input.
With `--readme`, the files are parsed like README.md files in GitHub.com. By default,
the files are parsed with all the GFM extensions.
help
if ARGV.include?(''--help'')
puts HELP
exit 0
end
root = File.expand_path(''../../'', __FILE__)
$:.unshift File.expand_path(''lib'', root)
require ''github/markdown''
require ''tempfile''
require ''launchy''
mode = :gfm
mode = :markdown if ARGV.delete(''--readme'')
mode = :plaintext if ARGV.delete(''--plaintext'')
outputFilePath = File.join(Dir.tmpdir, File.basename(ARGF.path)) + ".html"
File.open(outputFilePath, "w") do |outputFile |
outputFile.write(GitHub::Markdown.to_html(ARGF.read, mode))
end
outputFileUri = ''file:///'' + outputFilePath
Launchy.open(outputFileUri)
Creé una herramienta similar a la funcionalidad de vista previa de Atom, pero como una aplicación independiente. No estoy seguro si esto es lo que estás buscando, pero podría ser útil. - https://github.com/yoshuawuyts/vmd
Encontré un sitio web que lo hará por usted: http://tmpvar.com/markdown.html . Pegue su Markdown y se lo mostrará. ¡Parece funcionar bien!
Sin embargo, no parece manejar la opción de resaltado de sintaxis para el código; es decir, la función ~~~ruby
no funciona. Simplemente imprime ''rubí''.
Escribí un pequeño CLI en Python y agregué soporte GFM. Se llama Grip (Github Readme Instant Preview) .
Instalalo con:
$ pip install grip
Y para usarlo, simplemente:
$ grip
Luego visite localhost:5000
para ver el archivo readme.md
en esa ubicación.
También puede especificar su propio archivo:
$ grip CHANGES.md
Y cambiar de puerto:
$ grip 8080
Y, por supuesto, renderizar específicamente GitHub-Flavored Markdown, opcionalmente con el contexto del repositorio:
$ grip --gfm --context=username/repo issue.md
Características notables:
- Hace que las páginas aparezcan exactamente como en GitHub
- Bloques cercados
- API de Python
- Navega entre los archivos vinculados (gracias, vladwing !) Agregados en 2.0
- Exportación a un solo archivo (gracias, iliggio !) Agregado en 2.0
- Nuevo: leer desde la
stdin
y exportar a lastdout
stdin
agregada en 3.0
Espero que esto ayude a alguien aquí. Échale un vistazo
Esto es principalmente un seguimiento de la respuesta de @ barry-staes para usar Pandoc . Homebrew también lo tiene, si estás en una Mac:
brew install pandoc
Pandoc admite GFM como formato de entrada a través del nombre markdown_github
.
Salida a archivo
cat foo.md | pandoc -f markdown_github > foo.html
Abrir en Lynx
cat foo.md | pandoc -f markdown_github | lynx -stdin # To open in Lynx
Abrir en el navegador predeterminado en OS X
cat foo.md | pandoc -f markdown_github > foo.html && open foo.html # To open in the default browser on OS X`
Integración de TextMate
Siempre puede canalizar la selección actual o el documento actual a uno de los anteriores, como la mayoría de los editores le permiten hacer. También puede configurar fácilmente el entorno para que pandoc
reemplace el procesador Markdown predeterminado utilizado por el paquete Markdown .
Primero, cree un script de shell con el siguiente contenido (lo llamaré ghmarkdown
):
#!/bin/bash
# Note included, optional --email-obfuscation arg
pandoc -f markdown_github --email-obfuscation=references
Luego puede configurar la variable TM_MARKDOWN
(en Preferencias → Variables) a /path/to/ghmarkdown
, y reemplazará el procesador Markdown predeterminado.
Existe una herramienta realmente agradable y sencilla para navegar por documentos de GFM Markdown:
GFMS - Github Flavored Markdown Server
Es un servidor HTTP simple y liviano (sin necesidad de configuración) que puede iniciar en cualquier directorio que contenga archivos de rebajas para navegar por ellos.
caracteristicas:
- Soporte completo de GFM Markdown
- Resaltado de sintaxis de código fuente
- Buscando archivos y directorios
- Salida de aspecto agradable (y hojas de estilo CSS configurables)
- Exportar a PDF
GitHub ha desarrollado (desde) un bonito editor de texto modular llamado Atom (basado en Chromium y utiliza módulos Node.js para paquetes).
Un paquete preinstalado predeterminado Markdown Preview le permite mostrar su vista previa en una pestaña separada usando Ctrl + Shift + M.
No he probado su sintaxis completa, pero como viene de GitHub, me sorprendería mucho si la sintaxis de la vista previa fuera diferente a la de ellos (bloques cercados que usan ~~~
trabajo).
Ahora, aunque no está técnicamente basado en la línea de comandos, usa Node.js y se envía a un procesador basado en DOM , lo que podría ayudar a cualquiera que intente renderizar el HTML basado en la sintaxis de GitHub en un servidor web basado en Node.js, o simplemente editarlo / su README.md fuera de línea.
GitHub tiene una API de Markdown que puedes usar.
Hace poco hice lo que desea, porque necesitaba generar documentación de archivos Markdown y el estilo GitHub es bastante bueno. Intentalo. Está escrito en Node.js.
Logré usar un script Ruby de una línea para ese propósito (aunque tenía que ir en un archivo separado). Primero, ejecute estos comandos una vez en cada máquina cliente desde donde empujará documentos:
gem install github-markup
gem install commonmarker
A continuación, instale este script en su imagen de cliente y render-readme-for-javadoc.rb
:
require ''github/markup''
puts GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, File.read(''README.md''))
Finalmente, invocalo así:
ruby ./render-readme-for-javadoc.rb >> project/src/main/javadoc/overview.html
ETA: Esto no te ayudará con -flavour Markdown, que parece estar fallando en esta respuesta.
Mejorando la solución de @ barry-stae. Pega este fragmento en ~ / .bashrc
function mdviewer(){
pandoc $* | lynx -stdin
}
Entonces podemos ver rápidamente el archivo desde la línea de comandos. También funciona bien en sesiones SSH / Telnet.
mdviewer README.md
Mi solución final fue usar Python Markdown . Hice mi propia extension que arreglaba los bloques de la cerca.
No he encontrado un método rápido y fácil para Markdown con sabor a GitHub, pero he encontrado una versión un poco más genérica: Pandoc . Convierte de / a varios formatos, incluidos Markdown, Rest, HTML y otros.
También he desarrollado un Makefile
para convertir todos los archivos .md a .html (en gran parte al ejemplo en Writing, Markdown y Pandoc ):
# ''Makefile''
MARKDOWN = pandoc --from gfm --to html --standalone
all: $(patsubst %.md,%.html,$(wildcard *.md)) Makefile
clean:
rm -f $(patsubst %.md,%.html,$(wildcard *.md))
rm -f *.bak *~
%.html: %.md
$(MARKDOWN) $< --output $@
Para leer un archivo README.md en el terminal que uso:
pandoc README.md | lynx -stdin
Pandoc lo envía en formato HTML, que Lynx procesa en su terminal.
Funciona muy bien: llena mi terminal, los accesos directos se muestran a continuación, puedo desplazarme y ¡los enlaces funcionan! Sin embargo, solo hay un tamaño de fuente, pero los colores + sangría + alineación lo compensan.
Instalación:
sudo apt-get install pandoc lynx
Probablemente no es lo que quieres, pero como mencionaste Node.js: no pude encontrar una buena herramienta para obtener una vista previa de la documentación de GitHub Flavored Markdown en mi disco local antes de enviarlos a GitHub, así que hoy creé una, basada en Node.js: https://github.com/ypocat/gfms
Entonces, tal vez pueda reutilizar el showdown.js de él para su Wiki, si su pregunta sigue siendo real. Si no, tal vez otras personas que enfrentan el mismo problema que yo encontrarán (tal como yo lo hice) encontrarán esta pregunta y esta respuesta.
Tal vez esto podría ayudar:
gem install github-markdown
No existe documentación, pero la obtuve de la documentación de gollum . Mirando rubydoc.info , parece que puedes usar:
require ''github/markdown''
puts GitHub::Markdown.render_gfm(''your markdown string'')
en tu código rubí. Puede envolver eso fácilmente en un script para convertirlo en una utilidad de línea de comandos:
#!/usr/bin/env ruby
# render.rb
require ''github/markdown''
puts GitHub::Markdown.render_gfm File.read(ARGV[0])
./render.rb path/to/my/markdown/file.md
con ./render.rb path/to/my/markdown/file.md
Tenga en cuenta que esto no es seguro para su uso en la producción sin desinfección.
También vea https://softwareengineering.stackexchange.com/a/128721/24257 .
Si está interesado en cómo [Github] renderizamos los archivos de Markdown, es posible que desee revisar Redcarpet , nuestra interfaz de Ruby para la biblioteca de Sundown.
Ruby-script, que utiliza Redcarpet , será "utilidad de línea de comando", si tienes Ruby local
Un enfoque ''rápido y sucio'' es descargar las páginas HTML del wiki utilizando la utilidad wget
, en lugar de clonarlo. Por ejemplo, así es como descargué el wiki de Hystrix de GitHub (estoy usando Ubuntu Linux):
$ wget -e robots=off -nH -E -H -k -K -p https://github.com/Netflix/Hystrix/wiki
$ wget -e robots=off -nH -E -H -k -K -I "Netflix/Hystrix/wiki" -r -l 1 https://github.com/Netflix/Hystrix/wiki
La primera llamada descargará la página de entrada wiki y todas sus dependencias. El segundo llamará a todas las subpáginas en él. Puede navegar ahora por la wiki abriendo Netflix/Hystrix/wiki.1.html
.
Tenga en cuenta que ambas llamadas a wget
son necesarias. Si acaba de ejecutar el segundo, perderá algunas dependencias necesarias para mostrar las páginas correctamente.
Utilice marked . Es compatible con GitHub Flavored Markdown, se puede usar como un módulo Node.js y desde la línea de comandos.
Un ejemplo sería:
$ marked -o hello.html
hello world
^D
$ cat hello.html
<p>hello world</p>
Yo uso Pandoc con la opción --from=gfm
como esta:
$ pandoc markdown-sample.md --from=gfm -t html -o markdown-sample.html
pandoc
con browser
funciona bien.
Uso: cat README.md | pandoc -f markdown_github | browser
cat README.md | pandoc -f markdown_github | browser
Instalación (asumiendo que está utilizando Mac OSX):
$ brew install pandoc
$ brew install browser
O en Debian / Ubuntu: apt-get install pandoc browser
pip3 install --user markdown
python3 -m markdown readme.md > readme.html
No maneja las extensiones de GitHub, pero es mejor que nada. Creo que puedes extender el módulo para manejar las adiciones de GitHub.