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

OSCHINA-MIRROR/dl88250-lute

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_en_US.md 8.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 07:49 e04ee0c

Введение

Lute — это структурированный Markdown-движок, который полностью реализует последний стандарт GFM / CommonMark и лучше поддерживает китайский контекст.

Добро пожаловать на официальный дискуссионный форум Lute, чтобы узнать больше.

Предыстория

Раньше я использовал другие Markdown-движки, и они более или менее «дефектны»:

  • Неоднородная поддержка стандартных спецификаций.
  • Обработка «странного» текста занимает очень много времени и даже зависает.
  • Поддержка китайского языка недостаточно хороша.

Цель Lute — создать структурированный Markdown-движок, реализующий спецификации GFM/CM и обеспечивающий лучшую поддержку китайского языка. Так называемая «структурированность» относится к построению абстрактного синтаксического дерева из входного MD-текста, HTML-вывода, форматирования текста и т. д. через дерево операций. Реализация спецификации заключается в том, чтобы гарантировать отсутствие двусмысленности в рендеринге Markdown, чтобы один и тот же текст Markdown мог быть обработан движком Markdown для достижения одного и того же результата, что очень важно.

Движков, которые реализуют спецификации, не так уж много. Я хочу посмотреть, смогу ли я написать один, что является одной из мотиваций Lute. В интернете есть много мнений о том, как реализовать движок Markdown:

  • Некоторые люди говорят, что Markdown подходит для регулярного анализа, потому что... ✍️ Терминология

Markdown:

Формат Markdown с автоматическим пробелом, поддерживающий китайский и английский языки.

Заниматься проектами с открытым исходным кодом на GitHub — это очень приятно, пожалуйста, не пишите Github как `github`!

В частности, этого никогда не должно происходить в вашем резюме:

> Опытный пользователь Java, JavaScript, GIT, имею определённое понимание разработки для Android и iOS, опытный пользователь MySQL, базы данных PostgreSQL.

После исправления:

Заниматься проектами с открытым исходным кодом на GitHub — это очень приятно, пожалуйста, не пишите Github как `github`!

В частности, этого никогда не должно происходить в вашем резюме:

> Опытный пользователь Java, JavaScript, Git, имею определённое понимание разработки для Android, iOS, опытный пользователь MySQL, базы данных PostgreSQL.

⚡ Производительность

См. бенчмарк производительности движка Markdown на Golang.

💪 Надёжность

Lute выполняет всю обработку Markdown на LianDi, обрабатывает миллионы запросов на синтаксический анализ и рендеринг каждый день и работает стабильно.

🔒 Безопасность

Lute не реализует запрещённое расширение необработанного HTML (GFM) , поскольку расширение всё ещё имеет определённые уязвимости (). Рекомендуется использовать другие библиотеки (например, bluemonday) для фильтрации безопасности HTML, чтобы лучше адаптировать его к сценарию применения.

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

Есть три способа использования Lute:

  1. Бэкенд: импортируйте пакет github.com/88250/lute на языке Go.
  2. Бэкенд: запустите Lute как процесс HTTP-службы для вызова другими процессами, см. здесь.
  3. Фронтенд: импортируйте lute.min.js в каталог js, поддержка Node.js.

Go

Импортируйте библиотеку Lute:

go get -u github.com/88250/lute

Рабочий пример минимизации:

package main

import (
    "fmt"

    "github.com/88250/lute"
)

func main() {
    luteEngine := lute.New() // Поддержка GFM и оптимизация китайского контекста включены по умолчанию
    html := luteEngine.MarkdownStr("demo", "**Lute** — структурированный движок Markdown.")
    fmt.Println(html)
    // <p><strong>Lute</strong> — структурированный Markdown-движок.</p>
}

О синтаксической подсветке блоков кода:

  • По умолчанию используется внешняя таблица стилей, а тема — github.css. Вы можете скопировать файл стиля из каталога chroma-styles в проект и импортировать его.
  • Вы можете указать связанные с выделением параметры, такие как включение встроенных стилей, номера строк и темы, через lutenEngine.SetCodeSyntaxHighlightXXX().

JavaScript

Простой пример см. в демо в каталоге JavaScript. Для полного использования фронтенд-редактора см. демо в Vditor.

Некоторые детали:

  1. lute.js не имеет встроенной функции подсветки синтаксиса.
  2. Размер lute.js после компиляции составляет ~3,5 МБ, размер после обычного сжатия GZip составляет ~500 КБ.

📜 Документация

🏘️ Сообщество

📄 Лицензия

Lute использует открытую лицензию Mulan Permissive Software License, Version 2.

🙏 Признание

  • commonmark.js: парсер и рендерер CommonMark на JavaScript.
  • goldmark: анализатор Markdown, написанный на Go.
  • golang-commonmark: анализатор и рендерер Markdown, совместимый с CommonMark, на Go.
  • Chroma: подсветка синтаксиса общего назначения на чистом Go. 中文文案排版指北: Руководство по написанию текстов на китайском языке для улучшения письменной коммуникации.

GopherJS: Компилятор из Go в JavaScript для запуска кода Go в браузере.

1
https://api.gitlife.ru/oschina-mirror/dl88250-lute.git
git@api.gitlife.ru:oschina-mirror/dl88250-lute.git
oschina-mirror
dl88250-lute
dl88250-lute
master