Я использую метод усечения, чтобы усечь строку на моем сайте. Усекаю с кодом:
truncate(auto_link(textilize(post.content)), :length => 140)
Это усечение усекает содержание сообщения, но есть проблема с содержанием, содержащим ссылки. Например, содержание сообщения:
<p>Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo
<a href="http://www.yahoo.com">Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo
Yahoo </a> Google Google Google Google Google Google Google Google Google Google <a
href="http://www.google.com"> Google Google Google Google Google Google Google Google
</a><br></p>
В этом случае все html-теги и ссылки подсчитываются в счетчике символов методом усечения, а не методом усечения, подсчитывающим символы, которые фактически увидит зритель:
Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo
Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo Yahoo (etc..)
Есть ли здесь какая-нибудь работа для метода усечения?
РЕДАКТИРОВАТЬ: новый пример для устранения неясностей:
Пользователи публикуют свои сообщения в виде простого текста, и им разрешается использовать текстиль для некоторого форматирования. Что касается публикации ссылок, я разрешаю пользователям (а) вставлять простые URL-адреса (http://www.site.com, www.site.com и т. Д.), (Б) использовать текстовый синтаксис, который преобразует текст «кликни мне»: http://www.example.com в кликни мне текст или найди время, чтобы встроить ссылки в HTML-форму.
Я хочу, чтобы на странице, содержащей фрагменты сообщений человека, отображались только первые, скажем, 140 символов его сообщения. Но я хочу, чтобы это было 140 символов текста, который увидит читатель. Другими словами, допустим, пост пользователя начинается с:
Today I went to the market to pick up some fruit. "At the market there was this awesome
fruit display!":http://www.externalsite.com/picture.jpg Definitely want to go back
tomorrow!
Это будет преобразовано с помощью textilize в строку из 193 символов:
Today I went to the market to pick up some fruit. <a href="http://www.externalsite.com/picture.jpg">
At the market there was this awesome fruit display!</a> Definitely want to go back
tomorrow!
Текст, который пользователь увидит на странице, состоит всего из 138 символов:
Today I went to the market to pick up some fruit. At the market there was this awesome
fruit display! Definitely want to go back tomorrow!
Текст длиной 193 символа будет обрезан усечением, но если бы у меня была работа, весь текст отображался бы так, что в итоге получалось бы всего 138 символов со встроенной ссылкой.