0.0.1 • Published 4 years ago

@yfm-team/transform v0.0.1

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

Простой трансформер текста на YFM (Yandex Flavored Markdown) в HTML.

Yandex Flavored Markdown

Yandex Flavored Markdown (YFM) является диалектом Markdown, который используется сейчас для документации Яндекс.Облака, контента сайта Я.Облака и в различных внутренних проектах Яндекса.

Синтаксис базируется на CommonMark Spec, расширяя его дополнительными возможностями. В том числе, для создания полноценного сложного документационного проекта, такого как документация Яндекс.Облака.

Для сборки своего документационного проекта на YFM вы можете использовать пакет yfm-docs.

Более подробное описание синтаксиса YFM

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

Параметры

ИмяОписаниеТипЗначение по-умолчанию
varsПеременныеObject{}
pluginsИспользуемые плагиныfunction[]alerts, attrs, anchors, code, cut, deflist, imsize, meta, sup, tabs, titles
highlightLangsДополнительные языки для подсветки{'lang': function}{}
extractTitleВернуть первый заголовок первого уровня в качестве заголовка всего документаboolfalse
needTitleВернуть первый заголовок первого уровня не удалив его из контентаboolfalse
allowHTMLРазрешено ли использование HTMLboolfalse
linkifyДелать ли ссылками ссылкоподобные строкиboolfalse
breaksПереносить ли строки по символу перевода кареткиbooltrue
conditionsInCodeВыполнять ли условия в блоках кодаboolfalse

Подключение и вызов

Трансформер возвращает результат преобразования и лог, разделенный по типу сообщения: ошибки, предупреждения и информационные. Вы можете обработать сообщения об ошибках и предупреждениях исходя из необходимого вам уровня строгости.

const fs = require('fs');
const transform = require('@yfm/transform');

const content = fs.readFileSync(filePath, 'utf');
const vars = { user: { name: 'Alice' } };

const {result: {html, meta}, logs} = transform(content, {vars});

Плагины

Вы можете использовать произвольный набор плагинов, как предоставленные этим пакетом, так и любые markdown-it плагины

const fs = require('fs');
const transform = require('@yfm/transform');
const {plugins: {cut, sup}} = require('@yfm/transform');
const video = require('markdown-it-video');

const content = fs.readFileSync(filePath, 'utf');
const vars = { user: { name: 'Alice' } };

const {result: {html, meta}, logs} = transform(content, {vars, plugins: [cut, sup, video]});

Предоставляемые плагины

ИмяОписаниеПараметры
anchorsДобавляет якоря заголовкам{extractTitleOption? = false - нужно ли учитывать заголовок первого уровня}
codeДобавляет кнопку копирования в блоки кода-
cutСворачиваемые блоки-
imagesВставка изображений{assetsPublicPath = '/' - путь до расположения иконок, root - путь до корня проекта, path - путь до текущего трансформируемого файла}
includesВставки{path - путь до текущего трансформируемого файла, getVarsPerFile? - функция, которая должна по пути файла вернуть вычисленные переменные}
linksРасширенные ссылки{path - путь до текущего трансформируемого файла, root - путь до корня проекта}
notesЗаметки{lang? = ru - язык, нужен для локализации дефолтных текстов}
tabsТабы-

Набор плагинов подключаемый по умолчанию: attrs, meta, deflist, cut, alerts, anchors, tabs, code, imsize, sup.

Все плагины принимают опциональным параметром path путь до файла, который будет добавлен в лог ошибок.

Дополнительные языки для подсветки

Трансформер YFM использует highlight.js для подсветки языков. Вы можете передать дополнительный набор языков, который будет зарегистрирован для использования. Набор языков представляет собой обьект, где ключ - это имя языка, а значение - функция, определяющая язык. Смотрите уже существующие языки.

const transform = require('@yfm/transform');
const customLang = require('./custom-lang');

const highlightLangs = { 'custom-lang': customLang };

const {result: {html, meta}, logs} = transform(content, {highlightLangs});

Исходники

Установка

git clone git@github.com:yandex-cloud/yfm-transform.git
cd yfm-transform
npm install

При добавлении изменений в файлы из директории src перед обновлением версии пакета нужно выполнить

npm run dist

License

MIT