Полезные хитрости кодинга: То, что приходится каждый день искать в Интернете…

Делаем анонс из текста

Часто возникает задача сделать анонс из текста, не длиннее какого-то количества символов. Например, для вывода его в списке.

В этом поможет следующий код на Ruby:

def teaser(txt, max_length)
  return txt if txt.length <= max_length-4
  txt.mb_chars.slice(0, max_length-4+1).gsub(/[\s\.\?!,]+\w*$/, '').slice(0, max_length-4).to_s+" ..."
end

Этот код делает "тизер" не длиннее указанного количества символов, при этом не обрывает слова и удаляет лишние знаки препинания.

Обновлено: принимая во внимание то, как до сих пор реализована поддержка Unicode в Ruby On Rails (больше, конечно, в Ruby, чем в Rails), я изменил код. Теперь он поддерживает тексты на всех языках мира и корректно создает любые иноязычные (в т.ч. и на русском) тизеры.

Вы можете следить за обсуждением с помощью RSS 2.0 ленты.