Методы enable, disable

Библиотека Markdown-it предоставляет мощный и гибкий механизм управления функциональностью через правила парсинга (rules) и плагины. Методы enable и disable позволяют включать или отключать отдельные блоки синтаксиса Markdown на уровне движка, управляя поведением парсера.


Суть методов

  • enable(rules) — активирует одно или несколько правил Markdown.
  • disable(rules) — деактивирует одно или несколько правил.

Оба метода принимают:

  • Строку — название одного правила.
  • Массив строк — список правил для включения или отключения.

Правила соответствуют внутренним именам, которые использует Markdown-it для обработки определённых элементов Markdown (например, emphasis, link, image, code_block).

Методы мутируют текущий экземпляр Markdown-it, что делает их полезными для динамического изменения функциональности парсера.


Использование метода disable

Метод disable полезен, когда необходимо ограничить набор допустимого синтаксиса. Например, можно запретить обработку изображений и ссылок:

const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();

md.disable(['image', 'link']);

const result = md.render('![alt](image.png) [link](https://example.com)');
console.log(result);

Результат: Все изображения и ссылки остаются в исходном тексте как обычный текст, без генерации HTML.

Примечание: Если указать правило, которое уже отключено, ошибок не возникает — метод просто игнорирует такое действие.


Использование метода enable

Метод enable используется для включения ранее отключённых правил. Например:

md.enable('image');

const result2 = md.render('![alt](image.png) [link](https://example.com)');
console.log(result2);

Результат: Обработка изображений возобновляется, а ссылки по-прежнему остаются отключёнными.


Совмещение enable и disable

В реальных проектах часто требуется точно контролировать функциональность Markdown. Методы можно комбинировать:

md.disable(['link', 'code_inline'])
  .enable(['code_inline']);

const output = md.render('`inline code` [link](url)');
console.log(output);

Результат:

  • code_inline снова обрабатывается как встроенный код
  • link остаётся отключённым

Важные особенности

  1. Локальная модификация — методы воздействуют только на конкретный экземпляр MarkdownIt, а не на глобальные настройки.
  2. Имена правил чувствительны к регистру — нужно использовать точное название правила, зарегистрированное движком.
  3. Массив правил — удобный способ массового управления функциональностью без повторных вызовов метода.
  4. Взаимодействие с плагинами — плагины могут добавлять свои правила, которые также можно включать или отключать через эти методы.

Примеры полезных правил

Правило Назначение
emphasis Курсив и полужирный текст (*text*, **text**)
link Гиперссылки ([text](url))
image Изображения (![alt](url))
code_inline Встроенный код (\code`) | |code_block| Блоки кода (тройные обратные кавычки) | |fence| Fence-коды с подсветкой | |blockquote| Цитаты (> text) | |list`

Практическое применение

  • Безопасное отображение контента: отключение ссылок и изображений для предотвращения потенциально вредных вставок.
  • Настройка синтаксиса под специфические задачи: например, Markdown для документации, где запрещены HTML-элементы или ссылки на внешние ресурсы.
  • Динамическая модификация парсера: можно изменять поведение Markdown на лету в зависимости от контекста.

Методы enable и disable делают Markdown-it не просто парсером, а гибким инструментом для контроля синтаксиса, позволяя включать и отключать отдельные элементы Markdown без изменения основного кода или структуры документа.