HelpDown — конвертер md -> htm -> hlf

Хотите говорить о Far и не знаете, куда обратиться?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by NightRoman »

Latest post of the previous page:

Принято к сведению. Надо подумать, что стоит или нет. Прямо сейчас не получится, работаю над другими проектами.

В какой схеме колорера недочет? В markdown? Тогда подробнее (я уж забыл немного, что там и как).
User avatar
John Doe
Бюрократ
Posts: 13900
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by John Doe »

Markdown

Если в конце строки добавить два пробела, то последний подсветится (в обычном тексте, в списках).
В blockquote не подсветится.

А смысл двух пробелов это принудительный перенос строки (в html будет <br/>)

Edit:
Ещё в схеме не предусмотрена возможность атрибутов в fenced code block:
Last edited by John Doe on Sun 12 Nov, 2017 21:45, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13900
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by John Doe »

А пока оставлю последующим поколениям инструкцию с чего начать при использовании pandoc.

pandoc поддерживает ряд расширений стандарта markdown, детально описано тут: https://pandoc.org/MANUAL.html#pandocs-markdown.
Расширения можно произвольно (де)активировать, например auto_identifiers будет мешать (в HtmlToFarHelp используется конвенция: каждый заголовок с id это новая статья hlf).

Ещё при использовании с HtmlToFarHelp имеет значение ключ командной строки --wrap=preserve (на отображении не сказывается, но всё же удобнее когда абзацы в исходнике hlf свёрнуты).

Чтобы установить заголовок для html можно воспользоваться такой конструкцией в начале файла

Вот мои ассоциации:

md->html | *.md;*.text

Code: Select all

pandoc --wrap=preserve -s -f markdown-auto_identifiers -o "!\!.html" "!\!.!"
html->hlf | *.html

Code: Select all

HtmlToFarHelp.exe from="!\!.!" to="!\!.hlf"
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by NightRoman »

Все-таки пожелание потребовало целой статьи :)
Спасибо, это все полезно будет.
User avatar
John Doe
Бюрократ
Posts: 13900
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by John Doe »

John Doe wrote: Wed 08 Nov, 2017 16:00Жаль нет конвертера в bbcode.
Большинство того, что попалось онлайн работает плохо.
Подошёл вот этот https://web.liferay.com/de/community/fo ... e/84206009

Для командной строки нашёл пока только под perl https://github.com/pjf/Markdown-phpBB, https://github.com/ohnonot/md2bb.pl

Под pandoc тоже существует, но haskell готовить я не умею.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by NightRoman »

John Doe wrote: Sun 12 Nov, 2017 14:43Markdown

Если в конце строки добавить два пробела, то последний подсветится (в обычном тексте, в списках).
В blockquote не подсветится.
Пофиксил, пул реквест в очереди с еще одним фиксом.
https://github.com/colorer/Colorer-schemes/pull/61

Последнее время ждать "приема" приходится долго...
User avatar
John Doe
Бюрократ
Posts: 13900
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by John Doe »

Спасибо, подключил, то что надо.
"Ещё один фикс" тоже весьма кстати.

Соберу тут пожелания по раскраске:
  • Возможно ли раскрашивать fenced code blocks соответственно указанному типу?
  • И сложно ли распознавать setext-заголовки (т.е. подчёркнутые)?
  • Расширенное использование бэкслеша для экранирования.
    • В конце строки для индикации жёсткого переноса, отображать с ярким фоном (как и завершающие два пробела)
    • Перед пробелом отображать бэкслеш бледно (как и перед остальными escape-символами)
Last edited by John Doe on Fri 17 Nov, 2017 11:43, edited 1 time in total.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by NightRoman »

John Doe wrote: Fri 17 Nov, 2017 08:50По нему вопрос: возможно ли раскрашивать fenced code blocks соответственно указанному типу?

И сложно ли распознавать setext-заголовки (т.е. подчёркнутые)?
Первое можно для некоторого забитого набора языков из тех, что есть у колорер. Пробовал, работает. Пока неохота.

Второе не знаю, как. И можно ли вообще. Конструкция (начало определяется концом) не вписывается в обычную схему парсинга колорера.
User avatar
John Doe
Бюрократ
Posts: 13900
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by John Doe »

Добавил ещё пожеланий по раскраске
User avatar
John Doe
Бюрократ
Posts: 13900
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by John Doe »

https://gist.github.com/johnd0e/7d00f4d ... e-makefile
Makefile for documents converting using pandoc. Source: *.text (extension defined by SOURCE_EXT). Target(s): enumerated in commandline (otherwise can be set in .DEFAULT_GOAL) Usage: make some_doc.html Convert some_doc.text to some_doc.html. Instead of ".html" any other pandoc-supported file type can be used. make html Convert *.text to *.html. Instead of ".html" any other supported extension can be used, incl. hlf (must be enumerated in TARGET_EXT). make some_doc.hlf make hlf Convert to .hlf using pandoc and HtmlToFarHelp. make some_doc.forum make forum Convert to phpBB-flavored markdown (Litedown). make clean Clean current directory from all files with extensins specified in TARGET_EXT. make help This help make install Copy *.lua to $(APPDATA)\pandoc\filters Or to $$(DATA_DIR)\filters (if defined). Notes: 1. pandoc.exe and HtmlToFarHelp.exe must be available. It is also possible to define full paths in env variables PANDOC/HTMLTOFARHELP. 2. Some conversions may require additional lua filters, which must be present in current directory. Alternatively they can reside in $(DATA_DIR)\filters (See `make install`) 3. Some conversions may require lua writers, which must be present in current directory. Alternatively they can reside in $(DATA_DIR)\custom 4. The best way to customize this Makefile is including it in own Makefile, adding new rules and (re)defining corresponding variables.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13900
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by John Doe »

Хотел было создавать новую тему, но вспомнил что уже выкладывал скрипт здесь.

Добавлю пару слов к предыдущему сообщению.
Требования: Предлагается не просто "какой-то" Makefile, а система сборки документации в различных форматах (.hlf, .html, и *.md для форума) из единого источника на базе Markdown.
Репозитарий по ссылке выше содержит базовый Makefile, и несколько lua-скриптов ("фильтров"), необходимых для тонкой настройки вывода.
Это всё предполагается использовать как конструктор: для каждого проекта создаётся свой локальный Makefile, в котором подключается базовый, и указываются необходимые фильтры.
Для чего же нужны фильтры, приведу лишь несколько примеров:
  • Для презентации какого-либо скрипта на форуме его документацию стоит специально подготовить, в частности:
    Никто в здравом уме не станет сам с этим возиться, но если всё автоматически, то почему бы и нет.
  • Для html полезно Title не оставлять пустой, а продублировать туда первый Header.
  • Для hlf индекс справки, и перекрёстные ссылки на другие разделы (например в верхнем блоке как в справке LuaCheck. Или в нижнем, как в BufferScroll)
Чтобы подключить всё это к своему проекту достаточно Makefile подобного этому:

Code: Select all

# required user setting
BASE:=D:\repo\Makefile
PANDOC:=C:\Apps\pandoc\pandoc.exe
HTMLTOFARHELP:=$(FARPROFILE)\tools\HtmlToFarHelp\HtmlToFarHelp.exe

# plug base Makefile
include $(BASE)\Makefile
.DEFAULT_GOAL:=hlf

# optional local customization
%.hlfhtml: EXTRA+=--lua-filter addRefs.lua
%: FLAGS+= --toc
Всё, теперь при наличии исходного документа в файле с расширением *.text достаточно запустить команду make для создания *.hlf.
Или же явно указать цель: make hlf, make html, make forum.
В качестве цели также может быть указано имя результирующего файла.

P.S.
Репозиторий со скриптами надо бы актуализировать, но прямо сейчас я не готов этого сделать.
Поэтому привожу отдельно фильтр для формирования индекса и блока ссылок на соседние разделы
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10900
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 223 times
Been thanked: 359 times

HelpDown — конвертер md -> htm -> hlf

Post by HaRT »

John Doe wrote: Sat 11 May, 2024 18:52make hlf, make html, make forum
Не лучше ли ради единообразия заменить forum на BBCode/bbcode? Или хотя бы дополнить…
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13900
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by John Doe »

Сообщения для форума представляют собой markdown лишь с некоторыми вкраплениями bbcode.

Когда-то я делал скрипт который действительно полностью конвертировал маркдаун в bbcode, но с некоторых пор в такой конвертации необходимости нет.
Но расширение bbcode у меня зарезервировано у меня именно для настоящего bbcode.
https://t.me/FarManager — Telegram чат
Yegor
Posts: 1341
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 35 times
Been thanked: 63 times

HelpDown — конвертер md -> htm -> hlf

Post by Yegor »

О, а можно сконвертировать hlf назад в md? а то я тут начал для себя писать утилиту (но пока отложил)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
John Doe
Бюрократ
Posts: 13900
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 75 times
Been thanked: 431 times
Contact:

HelpDown — конвертер md -> htm -> hlf

Post by John Doe »

а можно сконвертировать hlf назад в md
Хм, даже внутри фара парсер hlf несколько глючный (см. багтрекер).
И перед фаром ведь стоит узкая задача: отобразить полу-отформатированный текст на экране.
Тогда как для конвертации из hlf куда-либо ещё всегда будет не хватать семантической информации: где список, где таблица, где абзац. Где жирный текст, а где курсив, или код.

Лучшее что можно тут сделать, это принять некие умолчания, и попытаться сделать преобразование, предполагая что наш hlf использует разметку в целом совместимую с Markdown (естественно за исключением ссылок).
Такая задача выполнима, но к сожалению она не поможет нам с зоопарком уже существующих hlf.
Вернее поможет, но только как промежуточный этап перед дальнейшей (в основном ручной) обработкой.
а то я тут начал для себя писать утилиту
Pandoc предоставляет тут некоторые возможности.
Достаточно написать парсер на lua, который должен будет классифицировать элементы текста в соответствии с типами Pandoc, а о конвертации в кучу других форматов он позаботится сам.
Есть примеры подобных парсеров, например для самого маркдауна.
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Обсуждение Far Manager”