Method: String#truncate_words
- Defined in:
- activesupport/lib/active_support/core_ext/string/filters.rb
#truncate_words(words_count, options = {}) ⇒ Object
Truncates a given text after a given number of words (words_count):
'Once upon a time in a world far far away'.truncate_words(4)
# => "Once upon a time..."
Pass a string or regexp :separator to specify a different separator of words:
'Once<br>upon<br>a<br>time<br>in<br>a<br>world'.truncate_words(5, separator: '<br>')
# => "Once<br>upon<br>a<br>time<br>in..."
The last characters will be replaced with the :omission string (defaults to “…”):
'And they found that many people were sleeping better.'.truncate_words(5, omission: '... (continued)')
# => "And they found that many... (continued)"
142 143 144 145 146 147 148 149 150 |
# File 'activesupport/lib/active_support/core_ext/string/filters.rb', line 142 def truncate_words(words_count, = {}) sep = [:separator] || /\s+/ sep = Regexp.escape(sep.to_s) unless Regexp === sep if self =~ /\A((?>.+?#{sep}){#{words_count - 1}}.+?)#{sep}.*/m $1 + ([:omission] || "...") else dup end end |