Download the PHP package phpsoftbox/markdown without Composer
On this page you can find all versions of the php package phpsoftbox/markdown. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download phpsoftbox/markdown
More information about phpsoftbox/markdown
Files in phpsoftbox/markdown
Package markdown
Short Description Safe Markdown renderer for PhpSoftBox documentation
License MIT
Informations about the package markdown
PhpSoftBox Markdown
Компонент безопасного рендера Markdown-документов.
Пакет дает framework-level API поверх Markdown parser и YAML parser. Он умеет разбирать Markdown source, front matter, строить HTML, TOC, heading anchors, обрабатывать расширения синтаксиса и возвращать diagnostics без привязки к тому, где именно используется результат: в документации, админке, CMS, письмах или другом app-layer.
Возможности
- CommonMark/GFM Markdown;
- YAML front matter;
- deterministic
idу заголовков; MarkdownTocпо заданным уровням заголовков;- fenced code blocks с
languageиtitle="file.php"; - admonitions
note,tip,info,warning,danger; - tabs-блоки;
- diagnostics без падения рендера;
- resolver ссылок и assets;
- raw HTML disabled by default;
- блокировка опасных URL schemes.
Front Matter
Если YAML невалидный, компонент вернет diagnostic front_matter.invalid, но тело
документа останется доступным.
TOC И Anchors
Заголовки получают стабильные id:
Результат:
Диапазон TOC настраивается:
Links И Assets
Renderer не знает файловую структуру, правила роутинга и публичные URL приложения. Для этого передается resolver:
Если resolver не смог найти цель, он возвращает MarkdownResolvedLink::unresolved()
или MarkdownResolvedAsset::unresolved(). Renderer добавит diagnostics
link.unresolved или asset.unresolved.
Code Blocks
Поддерживается title в info string:
`
В HTML появятся data-language, data-title и подпись блока.
Если задан allowedCodeLanguages, неизвестный язык попадет в diagnostic
code.language_unknown.
Admonitions
Поддержанные типы:
note;tip;info;warning;danger.
Неизвестный тип возвращает diagnostic admonition.unknown.
Tabs
Tabs-блок задается контейнером :::tabs и секциями @tab:
js console.log('ok'); `
Renderer вернет статичный HTML:
Компонент не навязывает JS-поведение. Приложение может подключить собственный
скрипт/React-компонент поверх классов markdown-tabs* и data-tab.
Некорректный блок возвращает diagnostic tabs.invalid.
HTML Safety
По умолчанию raw HTML экранируется:
Доступные политики:
MarkdownHtmlPolicy::Escape;MarkdownHtmlPolicy::Strip;MarkdownHtmlPolicy::Allow.
Даже при разрешенном HTML renderer блокирует опасные URL schemes:
javascript:, vbscript:, data:.
MarkdownHtmlPolicy::Allow — только для доверенного контента: renderer не санитизирует
HTML, <script>, <iframe> и атрибуты-обработчики (onerror, onclick) попадают в
результат как есть. Для пользовательского ввода используйте Escape или Strip.
Для внешних ссылок можно включить target/rel:
Diagnostics
Минимальные коды:
front_matter.invalid;link.unresolved;asset.unresolved;html.disallowed;admonition.unknown;tabs.invalid;heading.duplicate_id;code.language_unknown.
Лицензия
MIT