Как я могу добавить расширение, которое использует внутренний процессор уценки Gollum?

  • Описание:

    • Я пытаюсь интегрировать рабочий процесс и инструменты, которые включают в себя Vimwiki и Gollum. Я хочу просто добавить vimwiki в качестве типа расширения для редактора во время обработки внутренним процессором Markdown Gollum (см. "Вещи, которые я пробовал" #1).
    • В конце концов, я также хотел бы, чтобы Gollum по умолчанию использовал vimwiki при создании новых документов.
    • Проект, над которым я работаю, можно найти в https://github.com/karlredman/Vimwiki-Gollum-Integration
  • Особенности тестирования:

    • Gollum версия: 4.1.1
    • Тестируемый файл действителен для github.
    • Один и тот же контент тестируется с разными именами файлов и расширениями:
      • testx.thing
      • blah.vimwiki
    • Тестовые файлы работают нормально, когда они названы с расширениями.md
    • установлены соответствующие рендеринг драгоценные камни:
      • GitHub-уценка
      • GitHub-разметка
      • kramdown
      • красный ковер
    • Весь код тестируется в файле gollum --config
    • Я не очень хорошо разбираюсь в рубине

Вещи, которые я пробовал

  1. Создание нового расширения и пользовательского рендера
    • Это работает, за исключением того, что нет никаких причин для реализации собственного процессора (pandoc)
    • Это было бы идеально, чтобы имя Markdown заканчивалось на странице редактирования. Тем не менее, я не думаю, что мне следует привлекать Пандока здесь
    • Как, черт возьми, получить страницу редактирования по умолчанию для уценки vimwiki при редактировании расширения vimwiki?
    • используемый файл: blah.vimwiki
# always include this:
Gollum::Page.send :remove_const, :FORMAT_NAMES if defined? Gollum::Page::FORMAT_NAMES

################### custom extension + renderer
# # Custom extension rendering
# ## References
# * file reference: /var/lib/gems/2.1.0/gems/github-markup-1.6.0/lib/github/markup/command_implementation.rb
# * [Adding Pandoc to Gollum - Martin Wolf's weblog [OUTDATED]](https://www.mwolf.net/2014/04/29/adding-pandoc-to-gollum/)
ci = ::GitHub::Markup::CommandImplementation.new(
     /vimwiki/,
     ["Vimwiki"],
     "pandoc -f markdown-tex_math_dollars-raw_tex",
     :vimwiki)

# bind your own extension regex (the new set of extensions will also include `.asc` and `.adoc`):
# # * file reference: /var/lib/gems/2.1.0/gems/github-markup-1.6.0/lib/github/markups.rb
Gollum::Markup.register(:vimwiki,  "Vimwiki")
Gollum::Markup.formats[:vimwiki][:regexp] = /vimwiki/
GitHub::Markup::markup_impl(:vimwiki, ci)
##################
  1. Попытайтесь заменить основное расширение Markdown и выполнить регулярное выражение.
    • Я не понимаю, почему это не работает, если я неправильно понимаю порядок операций для сопоставления и переопределений.
    • Страница отобразится, расширение будет распознано, но страница не будет отформатирована вообще - все сжимает вместе.
# always include this:
Gollum::Page.send :remove_const, :FORMAT_NAMES if defined? Gollum::Page::FORMAT_NAMES

# Attempt to replace the primary extension for Markdown
# remove the original markdown binding:
Gollum::Markup.formats.delete(:markdown)

# and define your own 
Gollum::Markup.formats[:thing] = {
    :name => "Markdown",
    :regexp => /thing/
}
  1. Попытка просто заменить регулярное выражение расширения уценки
    • Тот же результат, что и попытка 2.
    • Страница будет отображаться, но она отформатирована неправильно
# always include this:
Gollum::Page.send :remove_const, :FORMAT_NAMES if defined? Gollum::Page::FORMAT_NAMES

Gollum::Markup.formats[:markdown][:regexp] = /vimwiki|thing/

1 ответ

Решение

Я закрываю вопрос:

Как оказалось, нет простого способа использовать процессор уценки, а также заставить страницу редактирования распознать, что существует другое расширение. Процессор уценки требует, чтобы расширение было действительным, если это регулярное выражение расширений, найденное в markdown.rb.

Суть в том, что мне нужно было бы реализовать нечто подобное тому, что в любом случае делает pandoc. Так что я просто собираюсь отбросить тему и придерживаться Пандока - "То, что я пробовал #1" из исходного вопроса.

Вместо того, чтобы занимать много места, я разместил документацию на странице проекта с примерами кода.

Спасибо тому, кто потратил некоторое время на размышления об этом.

Другие вопросы по тегам