1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/geekharmony-hmosapp1

Клонировать/Скачать
README8.md 5.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.06.2025 17:52 d53c9aa

HMarkdown

Библиотека для рендеринга Markdown на основе marked для платформы HarmonyOS

Скриншот

Основные характеристики:

  1. Поддержка динамического изменения тем
  2. Поддержка кастомизации парсинга и рендеринга с помощью плагинов (в демонстрационном примере реализован плагин для математических формул)

Параметры

Название Обязательный Значение по умолчанию Описание
content Да Текст в формате Markdown
theme Нет defaultTheme (аналог интерфейса GitHub) Тема, цвета и другие настройки
fontStyle Нет {fontColor: Color.Black, fontSize: 16, fontWeight: FontWeight.Normal} Стиль шрифта
lineSpace Нет 0 Интервал между элементами
textLineSpace Нет 0 Интервал между строками текста

Установка

ohpm install @lidary/markdown

Импорт

import { Markdown } from '@lidary/markdown';

Использование

Глобальная конфигурация```typescript

// Установка глобальной темы, которая заменяет встроенные темы markConfig.setTheme({ themeColor: Color.Red, link: { fontColor: Color.Red } }) // Установка события клика по изображению markConfig.registerImageClick = (url?: string) => { promptAction.showToast({ message: Изображение было нажато: ${url}, duration: 1500, bottom: "center", }) } // Установка события клика по ссылке markConfig.registerLinkClick = (url?: string) => { promptAction.showToast({ message: Ссылка была нажата: ${url}, duration: 1500, bottom: "center", }) }


```typescript
Markdown({
  content: this.markdownContent,
  lineSpace: 6,
  // Замена глобальной темы, установленной через markConfig.setTheme (наивысший приоритет)
  theme: {
    themeColor: Color.Orange,
    link: {
      fontColor: Color.Orange
    }
  },
  fontStyle: {
    fontColor: this.isDark ? Color.White : Color.Black
  }
}).backgroundColor(this.isDark ? Color.Black : Color.White)
```> #### Приоритет конфигурации (от высокого к низкому) следующий:
>
> 1. Тема **theme**, переданная через компонент Markdown
>
>  2. Вызов метода `markConfig.setTheme`
>
>  3. Встроенная по умолчанию тема в HMarkdown

---

### Плагины

1. Добавление плагинов

```typescript
// Добавление парсера математических формул (подробнее см. demo)
markConfig.addPlugin([latexBlock(), latexInline()])
  1. Добавление пользовательского рендеринга (рендеринг для пользовательских правил парсинга)
// Можно получить свойства, такие как цвет шрифта, отступы и т.д., через that.fontStyle, that.theme, that.lineSpace
@Builder
function BlockBuilder(type: string, token: Tokens.Generic, that: ESObject) {
  if (type === 'blockKatex') {
    // Можно передать token.text на сервер для генерации svg
    Row()
    {
      Image($r('app.media.latex_test'))
        .fillColor(that.fontStyle?.fontColor)
        .height(40)
    }
    .
    width('100%')
      .justifyContent(FlexAlign.Center)
  }
}

@Builder
function InlineBuilder(type: string, token: Tokens.Generic, that: ESObject) {
  if (type === 'inlineKatex') {
    // Можно передать token.text на сервер для генерации svg
    ImageSpan($r('app.media.latex_test'))
      .height(40)
      .verticalAlign(ImageSpanAlignment.CENTER)
  }
}

markConfig.customBlockBuilder = wrapBuilder(BlockBuilder)
markConfig.customInlineBuilder = wrapBuilder(InlineBuilder)
```## Лицензия

Проект использует лицензию [MIT License](https://gitee.com/daryl_code/HMarkdown/blob/main/Markdown/LICENSE). Пожалуйста, используйте и участвуйте в открытом исходном коде.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/geekharmony-hmosapp1.git
git@api.gitlife.ru:oschina-mirror/geekharmony-hmosapp1.git
oschina-mirror
geekharmony-hmosapp1
geekharmony-hmosapp1
master