Параметр smartypants является одной из настроек
библиотеки Marked, предназначенной для работы с Markdown в JavaScript.
Его основная задача — преобразование обычных символов в текстовые, более
«типографически правильные» аналоги. Это особенно полезно для улучшения
визуального восприятия текста на веб-страницах.
smartypantsПри включении smartypants Marked автоматически заменяет
следующие элементы:
Кавычки
Прямые одинарные и двойные кавычки (' и
") преобразуются в «умные» кавычки (‘,
’, “, ”).
Пример:
const input = '"Hello", he said.';
const output = marked(input, { smartypants: true });
// Результат: “Hello”, he said.Дефисы и тире
Двойное тире (--) преобразуется в длинное тире
(—).
Простой дефис в некоторых контекстах может оставаться без изменений.
Пример:
const input = 'Wait--what?';
const output = marked(input, { smartypants: true });
// Результат: Wait—what?Многоточие
Три точки (...) заменяются на единый символ
многоточия (…).
Пример:
const input = 'Loading...';
const output = marked(input, { smartypants: true });
// Результат: Loading…Строчные апострофы и обратные кавычки
Апострофы и обратные одинарные кавычки в определённых контекстах заменяются на правильные типографские аналоги.
Пример:
const input = "It's a test.";
const output = marked(input, { smartypants: true });
// Результат: It’s a test.smartypants в MarkedДля включения параметра достаточно передать его в объект настроек при
вызове функции marked:
const marked = require('marked');
const markdownText = '"Hello world" -- he said...';
const html = marked(markdownText, { smartypants: true });
console.log(html);
// Вывод: <p>“Hello world” — he said…</p>
Можно включить smartypants глобально, настроив
marked через marked.setOptions:
marked.setOptions({
smartypants: true
});
const htmlGlobal = marked('"Test" -- example...');
console.log(htmlGlobal);
// Вывод: <p>“Test” — example…</p>
smartypants не влияет на безопасность Markdown, так как
изменения затрагивают только текстовые символы.smartypants может изменять исходные символы, что иногда
нежелательно, например при генерации кода или технических текстов.Marked предоставляет возможность детальной настройки
smartypants через собственные опции:
Отключение конкретных замен:
extensions) и перехватывать преобразования.Пример расширения, которое отключает замену дефисов на тире:
const smartypantsExtension = {
name: 'noDashes',
level: 'inline',
renderer(token) {
if (token.type === 'text') {
return token.raw.replace(/--/g, '--'); // оставляем двойное тире без изменений
}
return token.raw;
}
};
marked.use({ extensions: [smartypantsExtension], smartypants: true });
const htmlCustom = marked('Wait--what?');
console.log(htmlCustom);
// Вывод: <p>Wait--what?</p>
smartypants целесообразно для публикации
текстов с естественным языком, где важна типографика.gfm,
breaks, headerIds) smartypants
корректно работает в большинстве случаев без конфликтов.smartypants через объект настроек.Использование параметра smartypants делает
Markdown-контент визуально более профессиональным и удобным для чтения,
превращая стандартные символы в типографически корректные аналоги без
изменения логики документа.