Быль о типографе

от автора

Было время, когда каждый веб-разработчик писал свой типограф или думал о нём. Я не стал исключением и написал типограф на PHP. Но как сделать типограф без нормальной поддержки UTF-8, в то время я не представлял, в итоге забросил идею.

Прошло время, но идея создания типографа не оставляла, и я решил написать его уже на JavaScript.


Начал с основных требований:

  • только UTF-8;
  • гибкость и расширяемость;
  • работа на клиенте и сервере, там, где есть JavaScript;
  • поддержка (X|HT)ML;
  • по умолчанию, HTML-cущности переводятся в чистые UTF-8 символы;
  • не типографировать стили и скрипты;
  • CLI-утилита.

Я быстро пришёл к модульности правил в типографе, одно правило — одна функция — один файл, все правила распределены по группам.

Добавить своё правило очень просто:

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

Ядро типографа всего лишь запускает правила-функции, передавая обработанный текст от правила к правилу.
Есть очереди, т. к. некоторые правила необходимо запускать в самом начале обработки текста, какие-то в конце.
Есть индексы у правил, в каком порядке в очереди запустить правило, это позволяет уменьшить сложность регулярных выражений.

Правила можно включать и отключать. Некоторые правила выключены по умолчанию, например, висячая пунктуация.

Быстрый старт

В браузере

npm i typograf

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

В Node.js

npm i typograf

var Typograf = require('typograf'),     tp = new Typograf({lang: 'ru'});  tp.enable('ru/optalign/*'); // Включить висячую пунктуацию console.log(tp.execute(' Мир - мой мир!!   ')); 

CLI

Устанавливаем:

npm i typograf -g

Типографируем текст по русским правилам:

typograf -l ru my_file.txt > my_new_file.txt

Варианты использования типографа:

В каждом типографе есть ошибки после типографирования. Чем больше тестов-текстов и пользователей, тем качественнее типограф, а это значит приветствуются замечания и пулл-реквесты на Github.

ссылка на оригинал статьи http://habrahabr.ru/post/266563/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *