Sha256: 5537902b65c2a4ad7001b99b609e72940d647b1f4f343a24e1ce6d4bc98c7981

Contents?: true

Size: 810 Bytes

Versions: 2

Compression:

Stored size: 810 Bytes

Contents

module SmartExcerpt
  class Helper
    include ActionView::Helpers::TextHelper

    def smart_truncate(s, opts = {})
      return '' if s.blank?
      opts = {words: 25}.merge(opts)
      if opts[:sentences]
        return s.split(/\.(\s|$)+/)[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
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
smart_excerpt-0.1.5 lib/smart_excerpt/helper.rb
smart_excerpt-0.1.4 lib/smart_excerpt/helper.rb