class SmartExcerpt::Helper
Public Instance Methods
smart_truncate(s, opts = {})
click to toggle source
# File lib/smart_excerpt/helper.rb, line 5 def smart_truncate(s, opts = {}) return '' if s.blank? opts = {words: 25}.merge(opts) if opts[:sentences] return s.split(/\.(\s|$)+/).delete_if {|s| s.blank? }[0, opts[:sentences]].map{|s| s.strip}.join('. ') + '.' end if opts[:letters] return truncate(s, length: opts[:letters], separator: ' ', omission: '...') end n = opts[:words] if n === Float::INFINITY return s end a = s.split(/\s/) # or /[ ]+/ to only split on spaces r = a[0...n].join(' ') + (a.size > n ? '...' : '') # replace with regular spaces r.gsub!(' ', ' ') # strip newlines r = r.strip.gsub("\r", '').gsub("\n", ' ') r.gsub(/\s+/, ' ') end