/typograf

Типографика на JavaScript

Primary LanguageJavaScriptOtherNOASSERTION

Типограф на JavaScript

NPM version NPM downloads Build Status Build Status Coverage Status Dependency Status

Помогает автоматически расставить неразрывные пробелы, исправить мелкие опечатки, привести кавычки к правильному виду, заменить дефисы на тире в нужных местах и многое другое.

Попробуйте типограф в действии.

Черты:

Форматы:

  • TXT
  • HTML
  • XML
  • SVG

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

В браузере

npm install typograf
<script src="./node_modules/typograf/dist/typograf.min.js"></script>
<script>
    var tp = new Typograf({lang: 'ru'});
    alert(tp.execute('     Мир - мой мир!      '));
</script>

Node.js

npm install typograf
const Typograf = require('typograf');
const tp = new Typograf({lang: 'ru'});

console.log(tp.execute(' Мир - мой мир!!   '));

Плагины

API

Висячая пунктуация

По умолчанию висячая пунктуация отключена.

Для включения необходимо подключить правила:

var Typograf = require('typograf'),
    tp = new Typograf({lang: 'ru'});

tp.enable('ru/optalign/*');
console.log(tp.execute('"Мир"'));

А также в HTML-код страницы добавить:

<!-- Для висячей пунктуации -->
<link rel="stylesheet" href="dist/typograf.css" />

Включить или отключить правила

var tp = new Typograf({lang: 'ru'});
tp.enable('ru/money/ruble'); // Включить правило
tp.enable('ru/money/*'); // Включить все правила в группе
tp.enable('*'); // Включить все правила
//...
tp.disable('ru/money/ruble'); // Отключить правило
tp.disable('ru/money/*'); // Отключить все правила в группе
tp.disable('*'); // Отключить все правила

Изменить настройку у правила

var tp = new Typograf({lang: 'ru'});

// Название правила, название настройки, значение

// Неразрывный пробел перед последним словом в предложении, не более 5 символов
tp.setting('common/nbsp/beforeShortLastWord', 'lengthLastWord', 5);

// Вложенные кавычки тоже «ёлочки»
tp.setting('ru/punctuation/quote', 'lquote2', '«');
tp.setting('ru/punctuation/quote', 'rquote2', '»');
tp.setting('ru/punctuation/quote', 'lquote3', '«');
tp.setting('ru/punctuation/quote', 'rquote3', '»');

// Неразрывный пробел после короткого слова, не более 3 символов
tp.setting('common/nbsp/afterShortWord', 'lengthShortWord', 3);

Добавить простое правило

Typograf.rule({
    name: 'common/other/emoji',
    handler: function (text) {
        return text.replace(/:-\)/g, '\uD83D\uDE0A');
    }
});

Режим работы

// Режим по умолчанию, HTML-сущности, как UTF-8 символы
var tp = new Typograf({lang: 'ru'});
tp.execute('...'); // …

// HTML-сущности, как имена
var tpName = new Typograf({lang: 'ru', mode: 'name'});
tpName.execute('...'); // &hellip;

// HTML-сущности, как цифры
var tpDigit = new Typograf({lang: 'ru', mode: 'digit'});
tpDigit.execute('...'); // &#8230;

Типографика на лету

Данный live-режим необходим, если текст типографируется на каждый ввод символа в текстовых полях.

var tp = new Typograf({lang: 'ru', live: true});

Подробнее

Неразрывные пробелы

По умолчанию типограф не заменяет неразрывные пробелы на обычные, чтобы не удалить ранее проставленные неразрывные пробелы. Если в тексте неправильно расставлены неразрывные пробелы, включите правило common/nbsp/replaceNbsp.

Перед типографированием в live-режиме неразрывные пробелы заменяются на обычные, т. к. один и тот же текст типографируется многократно при каждом вводе символа.

Отключение типографирования в участках текста

var tp = new Typograf({lang: 'ru'});

// Отключить типографирование внутри тега <no-typography>
tp.addSafeTag('<no-typography>', '</no-typography>');
//...
// Отключить типографирование внутри управляющих конструкций какого-нибудь шаблонизатора
tp.addSafeTag('\\{\\{', '\\}\\}'); // {{...}}
tp.addSafeTag('\\[\\[', '\\]\\]'); // [[...]]
//...
// Отключить типографирование внутри PHP-кода
tp.addSafeTag('<\\?php', '\\?>');

tp.execute(text);

Сжатие с UglifyJS

Если typograf.js сжимается вместе с другими js-файлами в UglifyJS, то необходимо использовать опцию ascii_only: false, иначе типограф будет работать некорректно.

Разработка

git clone https://github.com/typograf/typograf.git

Пересборка: npm run rebuild

Пересборка и запуск тестов: npm test

Подготовка новой версии: npm run dist

Проверка скорости работы правил: npm run benchmark

MIT License

Ссылки