Method: String#truncate
- Defined in:
- lib/active_support/core_ext/string/filters.rb
permalink #truncate(truncate_to, options = {}) ⇒ Object
Truncates a given text
to length truncate_to
if text
is longer than truncate_to
:
'Once upon a time in a world far far away'.truncate(27)
# => "Once upon a time in a wo..."
Pass a string or regexp :separator
to truncate text
at a natural break:
'Once upon a time in a world far far away'.truncate(27, separator: ' ')
# => "Once upon a time in a..."
'Once upon a time in a world far far away'.truncate(27, separator: /\s/)
# => "Once upon a time in a..."
The last characters will be replaced with the :omission
string (defaults to “…”). The total length will not exceed truncate_to
unless both text
and :omission
are longer than truncate_to
:
'And they found that many people were sleeping better.'.truncate(25, omission: '... (continued)')
# => "And they f... (continued)"
'And they found that many people were sleeping better.'.truncate(4, omission: '... (continued)')
# => "... (continued)"
70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/active_support/core_ext/string/filters.rb', line 70 def truncate(truncate_to, = {}) return dup unless length > truncate_to omission = [:omission] || "..." length_with_room_for_omission = truncate_to - omission.length stop = \ if [:separator] rindex([:separator], length_with_room_for_omission) || length_with_room_for_omission else length_with_room_for_omission end +"#{self[0, stop]}#{omission}" end |