/standalone_typograf

Невероятно быстрая и лёгкая библиотека для подготовки текста к публикации.

Primary LanguageRubyMIT LicenseMIT

StandaloneTypograf

Build Status Maintainability Test Coverage

StandaloneTypograf — gem для подготовки текста к публикации или типографирования текста на лету (вывод комментариев, например)

Пушкин писал Дельвигу: "Жду "Цыганов" и тотчас тисну...", (c) 1827 - А. С. Пушкин

Превратится в:

Пушкин писал Дельвигу: «Жду „Цыганов“ и тотчас тисну…», © 1827 — А. С. Пушкин

Отличия StandaloneTypograf

Отличия от типографа Лебедева и библиотеки Gilenson

  • автономность (самостоятельная/standalone обработка текста не зависящая от сторонних сервисов);
  • выполняет прямую функцию (не преобразует в html, работает с plain текстом);
  • корректная обработка вложенных кавычек (в отличие от gilenson);

Установка

gem install standalone_typograf

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

Создайте экземпляр типографа и передайте ему текст как единственный обязательный аргумент:

text = %Q("Я "читал" стихи Быкова,- сказал он." (c))
typograph = StandaloneTypograf::Typograf.new(text)
typograph.prepare
#=> «Я „читал“ стихи Быкова,— сказал он.» ©

По умолчанию типограф работает в режиме utf, если вам необходма подстановка html-кодов, передайте параметр mode со значением html

text = %Q("Я "читал" стихи Быкова,- сказал он." (c))
typograph = StandaloneTypograf::Typograf.new(text, mode: :html)
typograph.prepare
#=> «Я „читал“ стихи Быкова,— сказал он.» ©

Метод prepare вызывает все возможные обработчики текста. Вы можете вызвать только некоторые, передав массив с названием необходимых процессоров, в метод processor

text = %Q("Я "читал" стихи Быкова,- сказал он." (c))
typograph = StandaloneTypograf::Typograf.new(text)
typograph.processor(:dashes, :mnemonics)

Вы так же можете использовать метод prepare исключив ненужные обработчики. Для этого необходимо передать массив с названием ненужных процессоров с параметром exclude при инициализации типографа:

text = %Q("Я "читал" стихи Быкова,- сказал он." (c))
typograph = StandaloneTypograf::Typograf.new(text, exclude: :fractions)
typograph.prepare # будут выполнены все преобразования кроме замены дробей

Обработчики

Кавычки

Значение Тип Замена Utf Замена Html
" Внешняя, открывающая « «
" Внешняя, закрывающая » »
" Внутренняя, открывающая „
" Внутренняя, закрывающая “
StandaloneTypograf::Typograf.new(text).processor(:quotes)

Длинное тире

Значение Замена Utf Замена Html
- —
StandaloneTypograf::Typograf.new(text).processor(:dashes)

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

Значение Замена Utf Замена Html
-    

Неразрывные пробелы используются при отбивке длинного тире, одно-двухбуквенных слов и некоторых частиц.

StandaloneTypograf::Typograf.new(text).processor(:nbspaces)

Мнемоники

Значение Замена Utf Замена Html
(c) © ©
(tm) ™
(r) ® ®
+- ± ±
-> →
<- &larr;
~= &asymp;
StandaloneTypograf::Typograf.new(text).processor(:mnemonics)

Дроби

Значение Замена Utf Замена Html Html код
1/1 none 11 <sup>1</sup>&frasl;<sub>1</sub>
1234124/454325 none 1234124454325 <sup>1234124</sup>&frasl;<sub>454325</sub>

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

StandaloneTypograf::Typograf.new(text).processor(:fractions)

Чтобы отключить замену дробей используйте параметр exclude при инициализации

StandaloneTypograf::Typograf.new(text, :exclude => :fractions)

Многоточие

Значение Замена Utf Замена Html
... &hellip;
StandaloneTypograf::Typograf.new(text).processor(:ellipsis)

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request