Markdown в тексте
Расширение markdown отображает значение свойства text элемента text как текст с разметкой Markdown.
{
"type": "text",
"text": "# Заголовок\n\nТекст с **полужирным** и *курсивным* выделением.",
"extensions": [
{
"id": "markdown"
}
]
}
У расширения нет параметров.
Особенности работы
-
Расширение применяется только к элементу
text. -
Набор поддерживаемых конструкций Markdown зависит от платформы:
- Android — базовый синтаксис CommonMark. Дополнительные конструкции подключаются плагинами библиотеки Markwon.
- iOS — заголовки, полужирное, курсивное и зачеркнутое начертание, ссылки, встроенный код, маркированные и нумерованные списки, цитаты.
- Web — определяется функцией преобразования Markdown в HTML, которую передает приложение.
Подключение
build.gradle
dependencies {
implementation "com.yandex.div:div-markdown:${versions.divkit}"
}
В коде:
val divConfiguration = DivConfiguration.Builder(imageLoader)
.extension(DivMarkdownExtensionHandler(context))
.build()
Вторым параметром конструктора можно передать список плагинов Markwon.
Обработчик находится в модуле DivKitMarkdownExtension:
import DivKitMarkdownExtension
DivKitComponents(
...
extensionHandlers: [
MarkdownExtensionHandler()
]
)
DivKit не содержит библиотеку для разбора Markdown. Передайте в markdownExtensionBuilder функцию, которая преобразует Markdown в HTML:
import { markdownExtensionBuilder } from '@divkitframework/divkit/client';
import markdownit from 'markdown-it';
const md = markdownit();
const map = new Map();
map.set('markdown', markdownExtensionBuilder(str => md.render(str)));
render({
id: 'test',
target: element,
json: {},
extensions: map
});
Вторым аргументом можно передать объект с полем cssClass — CSS-классом, который добавляется к контейнеру с результатом преобразования.
Узнать больше
Вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: https://t.me/divkit_community_ru.