StandaloneTypograf — gem для подготовки текста к публикации или типографирования текста на лету (вывод комментариев, например)
Пушкин писал Дельвигу: "Жду "Цыганов" и тотчас тисну...", (c) 1827 - А. С. Пушкин
Превратится в:
Пушкин писал Дельвигу: «Жду „Цыганов“ и тотчас тисну…», © 1827 — А. С. Пушкин
Пример работы (онлайн типограф): http://typograf.herokuapp.com
- замена кавычек (поддерживаются внутренние и внешние кавычки);
- замена знаков (с), (тм), (р) на аналогичные ©, ™, ®. Буква в скобке может быть как латинской, так и кириллической;
- замена знака ±
- короткое тире (между числами без отбивки);
- замена многоточия;
- подстановка длинного тире (с использованием неразрывного пробела);
- привязка одно- и двухбуквенных слов к следующему за ними слову с помощью неразрывного пробела;
- привязка частиц (>=3) к предыдущему слову с помощью неразрывного пробела;
- замена всех 19 цельных символов дробей европейского вида, поддерживаемых стандартом Юникод.
- автономность (самостоятельная обработка текста не зависящая от сторонних сайтов и сервисов);
- выполняет прямую функцию (не преобразует в html, работает с plain текстом, UTF-8 символы (© вместо ©);
- корректная обработка двойных кавычек (в отличие от gilenson);
- высокая скорость;
Пример использования:
require 'standalone_typograf'
text = StandaloneTypograf::Typograf.new('"StandaloneTypograf" - простой и быстрый, его можно использовать "на лету"')
text.dasherize # Преобразует все тире
text.signs # Заменит знаки (с) => ©
text.quotes # Преобразует кавычки
# Эти три метода можно заменить одной командой: prepare
text.prepare # => «StandaloneTypograf» — простой и быстрый, его можно использовать «на лету»
Вы можете вызвать только нужные вам типографы или использовать все одной командой prepare. Список поддерживаемых типографов:
- dasherize (тире)
- signs (символы)
- quotes (кавычки)
- dots (многоточие)
- endash (короткое тире)
- nbspace (неразрывные пробелы)
- fractions (дроби)
Или наоборот, вы можете исключить ненужный вам типограф, передав символьный массив в параметре except с ненужными обработчиками:
require 'standalone_typograf'
text = StandaloneTypograf::Typograf.new('(c) А. А. Шилов', except: [:fractions])
# Выполнит все преобразования кроме замены дробей
text.prepare
Чтобы переопределить знаки по-умолчанию или добавить собственные, передайте хеш signs или signs_ru (для русских заменяемых обозначений) 'заменяемый текст (в формате regexp)' => 'знак'.
text = StandaloneTypograf::Typograf.new('(copy) 2013', signs: {'[(]copy[)]' => '©'})
text.signs # => "© 2013"
Чтобы переопределить кавычки (outer: внешние, inner: внутренние) передайте хеш quotes с ключем outer/inner и массивом из двух символов (левая и правая кавычки):
text = StandaloneTypograf::Typograf.new('"Мерседес"', quotes: { outer: ['«', '»'] } )
text.quotes # => "«Мерседес»'
Ruby 1.9.3 - 2.0.0; Rails 3-4
Add this line to your application's Gemfile:
gem 'standalone_typograf'
And then execute:
$ bundle
Or install it yourself as:
$ gem install standalone_typograf
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request