truncate_html
truncate_html copied to clipboard
rails helper that works just like truncate, but it respects, and produces well formed html
= {ianwhite}[http://github.com/ianwhite] / {truncate_html}[http://github.com/ianwhite/truncate_html] >{info}[http://ianwhite.github.com/truncate_html] >{api}[http://ianwhite.github.com/truncate_html/doc]
TruncateHtml is just like the vanilla truncate rails helper, except it respects tags and html entities, and returns valid html.
Rexml and HtmlEntities are used for the parsing. If the input is invalid html, then nokogiri is used to fix it up (but is not used when the input is fine). If the input cannot be fixed up, then a TruncateHtmlHelper::InvalidHtml runtime error is raised.
Inspired and heavily influenced by {this article by Mike Burns}[http://mikeburnscoder.wordpress.com/2006/11/11/truncating-html-in-ruby/] and the links contained therein.
== Usage
when +post.title+ is
This is my first post
Then
<%= truncate_html post.title, :length => 15 %>
results in
This is my fir…
== Dependencies
Requires the +htmlentities+ and +nokogiri+ gems:
in Gemfile:
gem "nokogiri" gem "htmlentities"
in your environment.rb file (~ rails 2)
config.gem "nokogiri" config.gem "htmlentities"
If you are on rails < 2.1, you need to explicitly include the following in your environment
require 'htmlentities' require 'nokogiri'
== Specs and Coverage
- Coverage is 100% (C0)
- CI: tested against all 2.x branches of rails
RSpec is used for testing, so the tests are in +spec/+ rather than +test/+ Do rake --tasks for more details.
{garlic}[http://github.com/ianwhite/garlic] is used for CI. To see what versions are tested against see {garlic.rb}[http://github.com/ianwhite/truncate_html/blob/master/garlic.rb]