Esiste un’utilità della riga di comando per il rendering di GitHub Flavored Markdown?

Mi chiedo se esiste una utility da riga di comando per prendere un file Markdown con sapore GitHub e renderlo in HTML.

Sto usando un wiki GitHub per creare contenuti del sito web. Ho clonato il repository sul mio server e vorrei quindi elaborarlo in un normale HTML. Per me è importante che ciò che appare su GitHub sia esattamente come dovrebbe cercare il mio sito web. Mi piacerebbe anche molto usare i blocchi recintati con ~~~ , quindi preferirei non usare solo la syntax standard di Markdown.

Ho visto un po ‘l’anteprima live di JavaScript pensando che potrei collegarlo a Node.js, ma dicono che è deprecato. Ho esaminato il repository redcarpet, ma non sembra abbia un’interfaccia a riga di comando.

Ho fatto il giro della mia soluzione, tuttavia, poiché nessuna soluzione qui è chiaramente migliore delle altre, lascerò la domanda senza una risposta selezionata.

Ho scritto una piccola CLI in Python e aggiunto il supporto GFM. Si chiama Grip (Github Readme Instant Preview) .

Installalo con:

 $ pip install grip 

E per usarlo, semplicemente:

 $ grip 

Quindi visitare localhost:5000 per visualizzare il file readme.md in quella posizione.

Puoi anche specificare il tuo file:

 $ grip CHANGES.md 

E cambia porta:

 $ grip 8080 

E, naturalmente, renderizza in modo specifico GitHub-Flavored Markdown, opzionalmente con il contesto del repository:

 $ grip --gfm --context=username/repo issue.md 

Caratteristiche notevoli:

  • Rende le pagine visualizzate esattamente come su GitHub
  • Blocchi recintati
  • API Python
  • Spostati tra i file collegati (grazie, vladwing !) Aggiunto in 2.0
  • Esporta in un singolo file (grazie, iliggio !) Aggiunto in 2.0
  • Novità: leggi da stdin ed esporta allo stdout aggiunto in 3.0

Spero che questo aiuti qualcuno qui. Dai un’occhiata .

Non ho trovato un metodo facile e veloce per Markdown GitHub-flavored, ma ho trovato una versione leggermente più generica – Pandoc . Converte da / a numerosi formati, tra cui Markdown, Rest, HTML e altri.

Ho anche sviluppato un Makefile per convertire tutti i file .md in .html (in gran parte nell’esempio su Writing, Markdown e 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 [email protected] 

Forse questo potrebbe aiutare:

 gem install github-markdown 

Nessuna documentazione esiste, ma l’ho ottenuta dalla documentazione di gollum . Guardando rubydoc.info , sembra che tu possa usare:

 require 'github/markdown' puts GitHub::Markdown.render_gfm('your markdown string') 

nel tuo codice Ruby. Puoi avvolgerlo facilmente in uno script per trasformarlo in un’utilità della riga di comando:

 #!/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 Si noti che questo non è sicuro per l’uso in produzione senza sterilizzazione.

 pip3 install --user markdown python3 -m markdown readme.md > readme.html 

Non gestisce le estensioni di GitHub, ma è meglio di niente. Credo che tu possa estendere il modulo per gestire le aggiunte di GitHub.

Probabilmente non è quello che vuoi, ma visto che hai citato Node.js: non sono riuscito a trovare un buon strumento per visualizzare in anteprima la documentazione di GitHub Flavored Markdown sul mio disco locale prima di trasferirli a GitHub, quindi oggi ne ho creato uno, basato su Node.js: https : //github.com/ypocat/gfms

Quindi forse puoi riutilizzare showdown.js da esso per il tuo Wiki, se la tua domanda è ancora attuale. In caso contrario, forse altre persone che affrontano lo stesso problema di me troveranno (proprio come ho fatto) questa domanda e questa risposta ad esso.

Per leggere un file README.md nel terminale, utilizzo:

 pandoc README.md | lynx -stdin 

Pandoc lo invia in formato HTML, che Lynx esegue nel tuo terminale.

Funziona alla grande: riempie il mio terminale, le scorciatoie sono mostrate sotto, posso scorrere e i collegamenti funzionano! C’è solo una dimensione di carattere, ma i colors + indentazione + allineamento compensano per quello.

Installazione:

 sudo apt-get install pandoc lynx 

GitHub ha un’API Markdown che puoi utilizzare.

Usa segnato . Supporta GitHub Flavored Markdown, può essere usato come un modulo Node.js e dalla riga di comando.

Un esempio potrebbe essere:

 $ marked -o hello.html hello world ^D $ cat hello.html 

hello world

Questo è principalmente un seguito alla risposta di @ barry-staes sull’uso di Pandoc . Lo ha anche Homebrew, se sei su un Mac:

 brew install pandoc 

Pandoc supporta GFM come formato di input tramite il nome markdown_github .

Uscita su file

 cat foo.md | pandoc -f markdown_github > foo.html 

Apri in Lynx

 cat foo.md | pandoc -f markdown_github | lynx -stdin # To open in Lynx 

Apri nel browser predefinito su OS X

 cat foo.md | pandoc -f markdown_github > foo.html && open foo.html # To open in the default browser on OS X` 

Integrazione con TextMate

È sempre ansible redirect la selezione corrente o il documento corrente a uno dei precedenti, come consentito dalla maggior parte degli editor. È inoltre ansible configurare facilmente l’ambiente in modo che pandoc sostituisca il processore Markdown predefinito utilizzato dal pacchetto Markdown .

Per prima cosa, crea uno script di shell con i seguenti contenuti (lo chiamerò ghmarkdown ):

 #!/bin/bash # Note included, optional --email-obfuscation arg pandoc -f markdown_github --email-obfuscation=references 

È quindi ansible impostare la variabile TM_MARKDOWN (in Preferenze → Variabili) in /path/to/ghmarkdown e sostituirà il processore Markdown predefinito.

Ho creato uno strumento simile alla funzionalità Anteprima di Atom, ma come applicazione autonoma. Non sono sicuro se questo è quello che stai cercando, ma potrebbe essere utile. – https://github.com/yoshuawuyts/vmd

VMD

pandoc con il browser funziona bene per me.

Utilizzo: cat README.md | pandoc -f markdown_github | browser cat README.md | pandoc -f markdown_github | browser

Installazione (supponendo che stai usando Mac OSX):

  • $ brew install pandoc

  • $ brew install browser

Oppure su Debian / Ubuntu: apt-get install pandoc browser

Vedi anche https://softwareengineering.stackexchange.com/a/128721/24257 .


Se sei interessato a come [Github] esegue il rendering dei file Markdown, potresti voler controllare Redcarpet , la nostra interfaccia Ruby nella libreria di Sundown.

Lo script di Ruby, che usa Redcarpet , sarà “utility della riga di comando”, se avrai Ruby locale

La mia soluzione finale era usare Python Markdown . Ho arrotolato la mia estensione che ha fissato i blocchi di recinzione.

C’è uno strumento davvero bello e semplice per sfogliare i documenti GFM Markdown:

GFMS – Github Flavored Markdown Server

È un server HTTP semplice e leggero (senza configurazione necessaria) che puoi avviare in qualsiasi directory contenente i file markdown per sfogliarli.

Caratteristiche:

  • Supporto GFM Markdown completo
  • Evidenziazione della syntax del codice sorgente
  • Navigazione di file e directory
  • Output dall’aspetto piacevole (e fogli di stile CSS configurabili)
  • Esporta in PDF

GitHub ha (da) sviluppato un simpatico editor di testo modulare chiamato Atom (basato su Chromium e utilizza i moduli Node.js per i pacchetti).

Un pacchetto preinstallato predefinito Markdown Preview consente di visualizzare l’anteprima in una scheda separata utilizzando Ctrl + Maiusc + M.

Non ho testato la sua syntax completa, ma dato che proviene da GitHub, sarei molto sorpreso se la syntax dell’anteprima fosse diversa dalla loro (blocchi recintati che usano ~~~ work).

Ora, sebbene non sia tecnicamente basato sulla riga di comando, utilizza Node.js e restituisce un renderer basato su DOM , che potrebbe aiutare chiunque cerchi di eseguire il rendering di codice HTML basato su syntax GitHub su un server web basato su Node.js, o semplicemente modificarlo / il suo README.md offline.

Migliorare la soluzione di @ barry-stae. Metti questo snippet in ~ / .bashrc

 function mdviewer(){ pandoc $* | lynx -stdin } 

Quindi possiamo visualizzare rapidamente il file dalla riga di comando. Funziona anche bene su sessioni SSH / Telnet.

 mdviewer README.md 

Aggiunta recente ma showdownjs ha uno strumento CLI che è ansible utilizzare per analizzare MD in HTML.

Ho trovato un sito web che farà questo per te: http://tmpvar.com/markdown.html . Incolla nel tuo Markdown e lo mostrerà per te. Sembra funzionare bene!

Tuttavia, non sembra gestire l’opzione di evidenziazione della syntax per il codice; cioè, la funzione ~~~ruby non funziona. Stampa solo ‘ruby’.

Sono riuscito a utilizzare uno script Ruby a una sola riga per quello scopo (anche se doveva andare in un file separato). Per prima cosa, esegui questi comandi una volta su ogni computer client con cui spingerai i documenti da:

 gem install github-markup gem install commonmarker 

Quindi, installa questo script nell’immagine del client e chiamalo render-readme-for-javadoc.rb :

 require 'github/markup' puts GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, File.read('README.md')) 

Infine, invocalo in questo modo:

 ruby ./render-readme-for-javadoc.rb >> project/src/main/javadoc/overview.html 

ETA: questo non ti aiuterà con StackOverflow-flavor Markdown, che sembra non riuscire in questa risposta.

Migliorando le risposte @ barry-stae e @Sandeep per gli utenti regolari di elinks, si aggiungerà quanto segue a .bashrc:

 function mdviewer() { pandoc $* | elinks --force-html } 

Non dimenticare di installare pandoc (ed elinks).

Sulla base della risposta di Jim Lim , ho installato la gem GitHub Markdown. Ciò includeva uno script chiamato gfm che prende un nome file sulla riga di comando e scrive l’equivalente HTML sullo standard output. L’ho leggermente modificato per salvare il file su disco e quindi per aprire il browser standard con launchy:

 #!/usr/bin/env ruby HELP = <<-help Usage: gfm [--readme | --plaintext] [] Convert a GitHub-Flavored Markdown file to HTML and write to standard output. With no  or when  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) 

Un approccio ‘rapido e sporco’ è quello di scaricare le pagine HTML wiki usando l’utility wget , invece di clonarla. Ad esempio, questo è il modo in cui ho scaricato il wiki Hystrix da GitHub (sto 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 prima chiamata scaricherà la pagina di immissione del wiki e tutte le sue dipendenze. Il secondo chiamerà tutte le sotto-pagine su di esso. Puoi sfogliare ora il wiki aprendo Netflix/Hystrix/wiki.1.html .

Si noti che entrambe le chiamate a wget sono necessarie. Se si esegue solo il secondo, si mancherà alcune dipendenze necessarie per visualizzare correttamente le pagine.

Io uso Pandoc con l’opzione --from=gfm questo modo:

 $ pandoc markdown-sample.md --from=gfm -t html -o markdown-sample.html 

Recentemente ho fatto quello che volevi, perché avevo bisogno di generare documentazione dai file Markdown e lo stile GitHub è molto carino. Provalo. È scritto in Node.js.

GFM