Как я могу добавить расширение, которое использует внутренний процессор уценки 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
- Я не очень хорошо разбираюсь в рубине
Вещи, которые я пробовал
- Создание нового расширения и пользовательского рендера
- Это работает, за исключением того, что нет никаких причин для реализации собственного процессора (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)
##################
- Попытайтесь заменить основное расширение 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/
}
- Попытка просто заменить регулярное выражение расширения уценки
- Тот же результат, что и попытка 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" из исходного вопроса.
Вместо того, чтобы занимать много места, я разместил документацию на странице проекта с примерами кода.
Спасибо тому, кто потратил некоторое время на размышления об этом.