Ставим рубиновый типограф на Рельсы

В продолжение вчерашней темы, добавил простой способ типографить избранные поля в модели ActiveRecord.

Достаточно написать в нужной модели примерно следующее:

class Article < ActiveRecord::Base
  typograf :title, :use_p => false, :use_br => false
  typograf :content, :teaser
end

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

Поддерживается несколько возможных синтаксисов объявления моделей для типографирования:

  • для одного конкретного поля:
    typograf :content
  • можно указать параметры для типографирования этого поля:
    typograf :content, :entity_type => AlsTypograf::NO_ENTITIES
  • для нескольких полей сразу (тоже с возможностью объявить параметры типографирования, общие для всех объявленных полей):
    typograf :skills, :achievements, :additional, :use_br => false, :use_p => true
  • для нескольких полей сразу (но с объявлением параметров для каждого конкретного поля):
    typograf :foo => {:entity_type => AlsTypograf::HTML_ENTITIES},
             :bar => {:use_p => true, :use_br => false},
             :baz => {:max_nobr => 5},
             :some_other_field_name => {}

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

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Комментарии (6) на “Ставим рубиновый типограф на Рельсы”

  1. Mikhail Tabunov говорит:

    А вам не кажется что в модели таким делам не место? А место во вьюшках.

  2. Alexander Semyonov говорит:

    Совсем не кажется.
    Во-первых, типографика является неотъемлемым качеством подаваемой информации. Нам не надо показывать информацию в одном месте правильно (с качественной типографикой), а в другом — неправильно.
    Во-вторых, если типографировать информацию в представлении — нам придётся это делать каждый раз при показе соответствующей страницы (забудем на время о кешировании), отдельно для каждого из форматов (html, xml, json), а при типографировании текста перед сохранением, мы делаем запрос единожды (только когда соответствующее поле изменилось) и забываем о нём.
    Таким образом, исключаются лишние запросы к веб-сервису, и мы можем достойно подавать информацию в любых представлениях, уже не заботясь о том, чтобы как-то преобразовать её.

  3. Виктор говорит:

    1. Типограф студии Лебедева ложится.
    2. Внешний канал от сайта к сервису типографирования ложится.

    И админка получает лулз от хттп таймаутов при каждом сохранении. Это уже было на одном из клиентов рокби, когда точно такой же плагин я написал для админки сайта про гостиницы.

    Так что, расово правильный способ – типографировать отдельной кнопкой рядом с полем.

  4. Alexander Semyonov говорит:

    При проблемах 1. и 2. просто вернётся неоттипографированный текст. Чуть подумает и вернётся.

  5. Виталий говорит:

    спасибо. буду юзать.

  6. Ярослав Маркин говорит:

    Вообще говоря, типографика должна быть на уровне представления, но нормальных CSS rules для этого нет, а jquery-плагин будет кушать очень много.

    Тут, как я понимаю, это просто сделано для in-database кеширования и сделано правильно — вся разметка должна пересчитываться на create/save.

Оставить комментарий

Вы должны авторизоваться для отправки комментария.