LINUX.ORG.RU

Markdown: синтаксис для include?

 


0

1

Надо тут включать на одном сайте в Markdown-статьи другие Markdown-документы. Есть идеи, как это сделать максимально идеологически близко к Markdown? То есть это должен быть какой-то формат, похожий на читаемый текст и, желательно, в рамках привычного синтаксиса. Навскидку вижу пару вариантов:

`#include «/path/file.md»`

Это совсем уже для «си головного мозга» :) Но хотя бы понятен смысл.

`{!/path/file.md!}`

С одной стороны, с MD роднит простота (отсутствие слов), с другой — формат совсем не «MD-шный».

Думаю, идеологически это должно быть что-то в духе MD-картинок или ссылок. В MD основная идеология — дополнительная разметка поверх простого текста. То есть, по хорошему, это должна быть какая-то наглядная надстройка над логикой `[текст описания](ссылка)`. Вот как картинки сделали добавлением восклицательного знака перед описанием.

Может, плюнуть и совместить а ля `#include[опциональное описание](ссылка)`? Заодно получается универсальный формат.

Или даже `!include[опциональное описание](ссылка)`? — почти единообразно с картинками :)

// кросспост с http://127.0.0.1:43110/1F4WVHDpQYxuJL6xEY3EZTYkZds9TTjVHC/?Topic:1535873946_1...

★★★★★
Ответ на: комментарий от KRoN73

Не MD-стиль

В том и суть, что токен не занят.

подсказывают вариант «lt gt»

Я о них тоже думал, но хтмл может пригодиться для хтмл.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Я о них тоже думал, но хтмл может пригодиться для хтмл.

Угу.

В том и суть, что токен не занят.

Зато двойные фигурные активно используются в шаблонизаторах :) Тройные — это code-блоки в популярном когда-то Trac.



Пока больше склоняюсь к своему последнему варианту. И почти в рамках нынешнего синтаксиса, и подсказка, что это за фигня при отсутствии парсера, и потом единообразно расширять можно другими командами.

KRoN73 ★★★★★
() автор топика

идиологически близко для инклуда в том числе и маркдауна в вебе это что-то вроде тега embed src=«file.md.rendered.to.html» type=«text/html», маркдаун же html теги поддерживает по желанию в маркдаун парсере заменить на вставку из md файла что бы рендерилось уже без вывода embed в html

или уже на клиенте или по дороге к нему ссылки на свои же md по каким-то критериям превращать в html или во что там рендерится

в общем имхо идеологически это постараться без расширений синтаксиса обойтись придумав что-то именно с парсингом/выводом того что есть — embed, ссылки или заголовок указывающий на md #relative/path/file.md

ежели хочется расширить то что что-то вроде #(link.md) (дескрипшн не нужен же, #!*>-+ заняты в начале строки поэтому заменить на @$%^& и прочее из незанятого по желанию)

muhas ★★★
()
Последнее исправление: muhas (всего исправлений: 1)
Ответ на: комментарий от muhas

дескрипшн не нужен же

хотя нужен, вероятно это частично (из-за путей частично) поможет для фаблека на те парсеры которые не будут поддерживать это расширения синтаксиса, они оставят тупо ссылку на md

muhas ★★★
()
Ответ на: комментарий от muhas

маркдаун же html теги поддерживает

ИМХО, идеологически это, как раз, хуже соответствует. И при выводе в виде HTML контент не покажется, и очень многословно получается.

дескрипшн не нужен же

Не обязателен, но не помешает — его можно использовать как описание вставки :)



В ZN предлагают:


Я бы использовал ![include:](link), по аналогии.
Я использую вариацию на тему ![alttext](link) для вставки других типов медиа:

![video:](link)
![audio:](link)



Плюс такого варианта в том, что можно использовать стандартный парсер, анализируя только alttext картинки. Я, кстати, аналогично дорабатывал форумы в ZeroNet для вывода видео. Ставится как картинка, но смотрится расширение. Если mp4, то видео :) Минус в том, что при отсутствии расширенного парсинга стандартный парсер покажет всё как некорректную картинку.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

И при выводе в виде HTML контент не покажется, и очень многословно получается.

многословно, да. в html как-раз отобразится, embed в 5.0 стандартизирован, хотя как работаят я хз

![audio:](link)

вот такие варианты ближе если уж расширять синтаксис, в них же тогда не заморачиваясь прописать ![md:](link)

muhas ★★★
()
Ответ на: комментарий от KRoN73

Я до сих пор путаюсь, как в Markdown должны размечаться ссылки:

[desc](link) или (desc)[link]

и картинки:

![desc](link) или !(desc)[link] или [!desc](link) или (!desc)[link]

Так что да, предложенная директива выполнена вполне себе в духе Markdown.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от KRoN73

Минус в том, что при отсутствии расширенного парсинга стандартный парсер покажет всё как некорректную картинку

Этот минус можно обойти если просто ссылку использовать [video:](link) или такую же ссылку но с $%^& в начале, выше как-раз про нужность дескрипшна об этом

muhas ★★★
()
Последнее исправление: muhas (всего исправлений: 1)
Ответ на: комментарий от EXL

Я до сих пор путаюсь, как в Markdown должны размечаться ссылки

Логика простая. Вот есть текст: «Как меня достал этот Google!». Как обычно ссылки добавляют в простой текст уточняющие? После отсылки на них — «Как меня достал этот Google! (http://www.google.com)» Теперь для удобства rich-чтения слово перед ссылкой подсвечиваем этой ссылкой, саму ссылку при выводе убираем за ненужностью. Ну и чтобы не одно слово было, а текст, то выделяем нужный фрагмент фигурными скобками: «Как меня достал этот [Google!](http://www.google.com

Т.е. важно помнить, что Markdown по сути — это простой текст :)

и картинки

А картинки — просто восклицательный знак перед ссылкой. Указание, что надо вывести не как ссылку, а как картинку.

1. Картинка (ссылка на картинку) — простой текст
2. [Картинка](ссылка на картинку) — покажется как ссылка
3. ![Картинка](ссылка на картинку) — покажется как картинка с alt-текстом, а не просто как текстовая ссылка
4. ![](ссылка на картинку) — alt-текст не нужен

:)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от muhas

Этот минус можно обойти если просто ссылку использовать [video:](link)

О! А это мысль. И валидный Markdown получается, и fallback.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от muhas

или такую же ссылку но с $%^& в начале, выше как-раз про нужность дескрипшна об этом

Можно без кракозябр, а дескрипшн просто после ключевого слова. Типа: [include:сепуление сепулек](sepulator.md)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

Откинул или не заметил? выше писали: [md:](link)

Не заметил :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от EXL

будет битая картинка на стандартных парсерах.

беда в том что [type:desc](blabla.md) тоже может быть битой ссылкой ибо пути относительны для файла\парсера, а не для результирующего html и привести их в соответствие не всегда возможно :(

muhas ★★★
()
Последнее исправление: muhas (всего исправлений: 1)
Ответ на: комментарий от KRoN73

Логика простая. Вот есть текст: «Как меня достал этот Google!». Как обычно ссылки добавляют в простой текст уточняющие? После отсылки на них — «Как меня достал этот Google! (http://www.google.com)» Теперь для удобства rich-чтения слово перед ссылкой подсвечиваем этой ссылкой, саму ссылку при выводе убираем за ненужностью. Ну и чтобы не одно слово было, а текст, то выделяем нужный фрагмент фигурными скобками: «Как меня достал этот [Google!](http://www.google.com

а вот теперь пожалуй и я запомню и не буду путать местами скобочки [] ()

muhas ★★★
()
Ответ на: комментарий от KRoN73

Я в курсе. Но зачем изобретать велосипед, если можно взять существующий синтаксис? Или он не совместим с md?

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

зачем изобретать велосипед, если можно взять существующий синтаксис? Или он не совместим с md?

Он идеологически не родной для md :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от SR_team

А можно проста парсить ссылку на расширение md|markdown, как это делает Vanilla с сылками на ютуб

Мне нужен более общий случай, у меня в конкретной задаче ссылки без имени файлов :D

KRoN73 ★★★★★
() автор топика

Мы у себя сделали просто с синтаксисом Apache SSI.

vzzo ★★★
()
☭(include url)☭ - включить URL
/☭ - вставить серп и молот перед открывающей или закрывающей скобкой. 

При этом вместо include в будущем можно будет добавить ещё какое-то слово, например, comment, и таким образом получить пространство для неограниченного расширения формата. `#include ` не подходит, т.к. это уже исходный текст. Да и любой другой вариант, который можно нагородить из ASCII-значков, уже имеет смысл в markdown и сломает какие-то документы.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от KRoN73

Кстати, во:

![☭подстановка альт-текст](url-подставляемого-документа.png)
По соглашению, для каждого url-текста, должен существовать отрендеренный этот же документ в виде png, и находиться по адресу url-подставляемого-документа.png.

Тогда даже парсеры, не понимающие вставок, смогут читать этот текст хотя бы иногда.

den73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.