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.

Репозиторий DivKit