У меня есть сайт Rails, где контент написан на уценке. Я хочу отобразить фрагмент каждого из них со ссылкой "Подробнее ...".
Как мне это сделать? Простое усечение необработанного текста не будет работать, например ..
>> "This is an [example](http://example.com)"[0..25]
=> "This is an [example](http:"
В идеале я хочу разрешить автору (опционально) вставить маркер, чтобы указать, что использовать в качестве «фрагмента», если не потребуется 250 слов, и добавить «...» - например ..
This article is an example of something or other.
This segment will be used as the snippet on the index page.
^^^^^^^^^^^^^^^
This text will be visible once clicking the "Read more.." link
Маркер можно рассматривать как маркер EOF (который можно игнорировать при отображении полного документа)
Я использую maruku для обработки Markdown (RedCloth очень склонен к Textile, BlueCloth чрезвычайно глючит, и я хотел парсер нативного Ruby, который исключал peg-markdown и RDiscount)
В качестве альтернативы (поскольку Markdown в любом случае переводится в HTML) правильное усечение HTML было бы вариантом - хотя было бы предпочтительнее не markdown()
весь документ, просто чтобы получить первые несколько строк.
Итак, я могу придумать варианты (в порядке предпочтения) ..
- Добавить параметр «усечь» в анализатор maruku, который будет анализировать только первые x слов или до маркера «отрывка».
- Записать / найти не зависящий от синтаксического анализатора Markdown truncate'r
- Запись / поиск интеллектуальной функции усечения HTML