Есть ли утилита командной строки для рендеринга GitHub?

Мне интересно, есть ли утилита командной строки для принятия файла GitHub Marked и рендеринга его в HTML.

Я использую вики GitHub для создания содержимого веб-сайта. Я клонировал репозиторий на своем сервере и хотел бы обработать его в обычный HTML. Для меня важно, что то, что появляется на GitHub, - это именно то, как он должен искать мой сайт. Я также очень хотел бы использовать огражденные блоки с ~~~, поэтому я бы предпочел не использовать только стандартный синтаксис Markdown.

Я немного посмотрел в предварительный просмотр JavaScript в JavaScript, чтобы подключить его к Node.js, но они говорят, что он устарел. Я посмотрел репозиторий redcarpet, но это не похоже на интерфейс командной строки.

Я выполнил свое собственное решение, однако, поскольку решение здесь явно лучше других, я оставлю вопрос без ответа.

Ответ 1

Я написал небольшой CLI в Python и добавил поддержку GFM. Он называется Grip (мгновенный просмотр Github Readme).

Установите его с помощью:

$ pip install grip

И использовать его просто:

$ grip

Затем посетите localhost:5000, чтобы просмотреть файл readme.md в этом месте.

Вы также можете указать свой собственный файл:

$ grip CHANGES.md

И измените порт:

$ grip 8080

И, конечно же, специально создайте GitHub-Flavored Markdown, необязательно с контекстом репозитория:

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

Известные функции:

  • Отображает страницы так, как на GitHub
  • Огороженные блоки
  • API Python
  • Перемещение между связанными файлами (спасибо, vladwing!) добавлено в 2.0
  • Экспорт в один файл (спасибо, iliggio!) добавлен в 2.0
  • Новое: Чтение из stdin и экспорт в stdout, добавленный в 3.0

Надеюсь, это поможет кому-то здесь. Проверьте это.

Ответ 2

Я не нашел быстрый и легкий метод для Markdown, настроенный на GitHub, но я нашел несколько более общую версию - Pandoc. Он преобразует из/в несколько форматов, включая Markdown, Rest, HTML и другие.

Я также разработал Makefile для преобразования всех файлов .md в .html(в значительной степени к примеру в Writing, Markdown и Pandoc):

# 'Makefile'
MARKDOWN = pandoc --from markdown_github --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]

Ответ 3

Возможно, это может помочь:

gem install github-markdown

Документация не существует, но я получил ее из документации gollum. Рассматривая rubydoc.info, похоже, вы можете использовать:

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

в вашем коде Ruby. Вы можете легко переносить это в script, чтобы превратить его в утилиту командной строки:

#!/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. Обратите внимание, что это небезопасно для использования в производстве без дезинфекции.

Ответ 4

sudo pip install markdown
python -m markdown readme.md > readme.html

Он не обрабатывает расширения GitHub, но лучше, чем ничего. Я считаю, что вы можете расширить модуль для обработки дополнений GitHub.

Ответ 5

Наверное, не то, что вы хотите, но так как вы упомянули Node.js: я не смог найти хороший инструмент для предварительного просмотра документации GitHub Flavored Markdown на моем локальном диске, прежде чем передавать их в GitHub, поэтому сегодня я создал его на основе Node.js: https://github.com/ypocat/gfms

Итак, возможно, вы можете повторно использовать showdown.js для своей Wiki, если ваш вопрос по-прежнему актуальен. Если нет, возможно, другие люди, столкнувшиеся с той же проблемой, что и я, найдут (как и я) этот вопрос и этот ответ на него.

Ответ 6

Используйте marked. Он поддерживает GitHub Flavored Markdown, может использоваться как модуль Node.js и из командной строки.

Пример:

$ marked -o hello.html
hello world
^D
$ cat hello.html
<p>hello world</p>

Ответ 7

GitHub имеет API Markdown, который вы можете использовать.

Ответ 8

Чтобы прочитать файл README.md в терминале, я использую:

pandoc README.md | lynx -stdin

Pandoc выводит его в формате HTML, который Lynx отображает в вашем терминале.

Он отлично работает: он заполняет мой терминал, ярлыки показаны ниже, я могу прокручивать, и ссылки работают! Тем не менее, существует только один размер шрифта, но цвета + выравнивание + выравнивание составляют это.

Установка:

sudo apt-get install pandoc lynx

Ответ 9

Я создал инструмент, аналогичный функциям Atom Preview, но как отдельное приложение. Не уверен, что это то, что вы ищете, но это может быть полезно. - https://github.com/yoshuawuyts/vmd

vmd

Ответ 10

В основном это ответ на вопрос @barry-staes для использования Pandoc. У Homebrew тоже есть это, если вы на Mac:

brew install pandoc

Pandoc поддерживает GFM как формат ввода с помощью имени markdown_github.

Выход в файл

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

Открыть в Lynx

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

Открыть в браузере по умолчанию в OS X

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

Интеграция TextMate

Вы всегда можете подключить текущий или текущий документ к одному из вышеперечисленных, как это позволяет большинство редакторов. Вы также можете легко настроить среду, чтобы pandoc заменил процессор Markdown по умолчанию, используемый пакетом Markdown.

Сначала создайте оболочку script со следующим содержимым (я назову это ghmarkdown):

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

Затем вы можете установить переменную TM_MARKDOWN (в настройках → Переменные) на /path/to/ghmarkdown, и она заменит процессор Markdown по умолчанию.

Ответ 11

pandoc с browser работает хорошо для меня.

Использование: cat README.md | pandoc -f markdown_github | browser

Установка (Предположим, вы используете Mac OSX):

  • $ brew install pandoc

  • $ brew install browser

Или на Debian/Ubuntu: apt-get install pandoc browser

Ответ 12

Также см. https://softwareengineering.stackexchange.com/a/128721/24257.


Если вам интересно, как мы [Github] выставляем файлы Markdown, вы можете проверить Redcarpet, наш Ruby интерфейс к библиотеке Sundown.

Ruby- script, которые используют Redcarpet, будет "утилитой командной строки", если у вас будет локальный Ruby

Ответ 14

Существует действительно хороший и простой инструмент для просмотра документов GFM Markdown:

GFMS - Gritub Flavored Markdown Server

Это простой и легкий (без настройки) HTTP-сервер, который вы можете запустить в любом каталоге, содержащем файлы разметки, чтобы просмотреть их.

Особенности:

  • Поддержка Full GFM Markdown
  • Выделение синтаксиса исходного кода
  • Просмотр файлов и каталогов
  • Хороший внешний вид (и настраиваемые таблицы стилей CSS)
  • Экспорт в PDF

Ответ 15

GitHub (с тех пор) разработал красивый модульный текстовый редактор под названием Atom (на основе Chromium и использует Node.js для пакетов).

Предустановленный пакет по умолчанию Markdown Preview позволяет отображать предварительный просмотр на отдельной вкладке с помощью Ctrl + Shift + M.

Я не тестировал его полный синтаксис, но поскольку он поступает из GitHub, я был бы очень удивлен, если синтаксис предварительного просмотра отличается от их (блокированные блоки с использованием ~~~ работают).

Теперь, хотя он не является технически основанной на командной строке, он использует Node.js и выводит на DOM, который может помочь любому, кто пытается отобразить HTML на основе синтаксиса GitHub на веб-сервере с Node.js или просто отредактировать его/ее README.md в автономном режиме.

Ответ 16

Улучшение решения @barry-stae. Привяжите этот фрагмент в ~/.bashrc

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

Затем мы можем быстро просмотреть файл из командной строки. Также отлично работает над сеансами SSH/Telnet.

mdviewer README.md

Ответ 17

Я нашел веб-сайт, который сделает это за вас: http://tmpvar.com/markdown.html. Вставьте в свой Markdown, и он отобразит его для вас. Кажется, все работает отлично!

Однако, похоже, он не обрабатывает параметр подсветки синтаксиса для кода; то есть функция ~~~ruby не работает. Он просто печатает "ruby".

Ответ 18

Позднее добавление, но showdownjs имеет инструмент CLI, который вы можете использовать для разбора MD в HTML.

Ответ 19

На основе Джим Лим ответ, я установил GitHub Markdown gem. Это включало script, называемый gfm, который принимает имя файла в командной строке и записывает эквивалентный HTML в стандартный вывод. Я немного изменил это, чтобы сохранить файл на диске, а затем открыть стандартный браузер с помощью запуска:

#!/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)

Ответ 20

"Быстрый и грязный" подход заключается в загрузке HTML-страниц wiki с помощью утилиты wget вместо клонирования. Например, так я загрузил вики Hystrix из GitHub (я использую 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

Первый вызов будет загружать страницу входа в wiki и все ее зависимости. Второй вызовет все подстраницы на нем. Вы можете просмотреть wiki, открыв Netflix/Hystrix/wiki.1.html.

Обратите внимание, что оба вызова wget необходимы. Если вы просто запустите второй, вы пропустите некоторые зависимости, необходимые для правильного отображения страниц.

Ответ 21

Улучшение на @barry-stae и @Sandeep ответов для обычных пользователей elinks, которые вы добавили бы в .bashrc:

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

Не забудьте установить pandoc (и elinks).

Ответ 22

Мне удалось использовать однострочный Ruby script для этой цели (хотя он должен был идти в отдельный файл). Во-первых, запустите эти команды один раз на каждом клиентском компьютере, из которого вы будете выталкивать документы: gem install github-markup gem install commonmarker Затем установите этот script в образ вашего клиента и назовите его render-readme-for-javadoc.rb:

`` `  требуется "github/markup"

помещает GitHub:: Markup.render_s (GitHub:: Markups:: MARKUP_MARKDOWN, File.read('README.md')) `` `

Наконец, вызовите его следующим образом:

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

ETA: Это не поможет вам с Markdown от StackOverflow, который, кажется, терпит неудачу в этом ответе.

Ответ 23

Недавно я сделал то, что вам нужно, потому что мне нужно было создавать документацию из файлов Markdown, а стиль GitHub довольно приятный. Попробуй. Он написан в Node.js.

gfm