abbreviato
abbreviato is a Ruby library for truncating HTML strings keeping the markup valid. It is a fork of jorgemanrubia/truncato but focused on truncating to a bytesize, not on a per-character basis.
Installing
In your Gemfile
gem 'abbreviato'
Usage
truncated_string, was_truncated = Abbreviato.truncate("<p>some text</p>", max_length: 4)
# => ["<p>s...</p>", true]
The configuration options are:
-
max_length
: The size, in bytes, to truncate (30
by default) -
tail
: The string to append when the truncation occurs ('…' by default). -
fragment
: Indicates whether the document to be truncated is an HTML fragment or an entire document (withHTML
,HEAD
&BODY
tags). Setting to true prevents automatic addition of these tags if they are missing. Defaults totrue
.
Performance
Abbreviato was designed with performance in mind. Its main motivation was that existing libs couldn't truncate a multiple-MB document into a few-KB one in a reasonable time. It uses the Nokogiri SAX parser.
Running the tests
bundle exec rake
Running a single test
rspec spec/abbreviato/abbreviato_spec.rb
rspec spec/abbreviato/abbreviato_spec.rb:357
Running all checks
bundle exec rake spec
Contribute
Follow our contribution guidelines.