5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/smart_excerpt.rb', line 5
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
a = s.split(/\s/) n = opts[:words]
r = a[0...n].join(' ') + (a.size > n ? '...' : '')
r.gsub!(' ', ' ')
r = r.strip.gsub("\r", '').gsub("\n", ' ')
r.gsub(/\s+/, ' ')
end
|