instance method
excerpt
Ruby on Rails 7.2.3
Since v2.2.3Signature
excerpt(text, phrase, options = {})
Extracts the first occurrence of phrase plus surrounding text from text. An omission marker is prepended / appended if the start / end of the result does not coincide with the start / end of text. The result is always stripped in any case. Returns nil if phrase isn’t found.
Options
:radius-
The number of characters (or tokens — see
:separatoroption) aroundphraseto include in the result. Defaults to 100. :omission-
The marker to prepend / append when the start / end of the excerpt does not coincide with the start / end of
text. Defaults to"...". :separator-
The separator between tokens to count for
:radius. Defaults to"", which treats each character as a token.
Examples
excerpt('This is an example', 'an', radius: 5) # => "...s is an exam..." excerpt('This is an example', 'is', radius: 5) # => "This is a..." excerpt('This is an example', 'is') # => "This is an example" excerpt('This next thing is an example', 'ex', radius: 2) # => "...next..." excerpt('This is also an example', 'an', radius: 8, omission: '<chop> ') # => "<chop> is also an example" excerpt('This is a very beautiful morning', 'very', separator: ' ', radius: 1) # => "...a very beautiful..."
Parameters
-
textreq -
phrasereq -
optionsopt = {}
Source
# File actionview/lib/action_view/helpers/text_helper.rb, line 235
def excerpt(text, phrase, options = {})
return unless text && phrase
separator = options.fetch(:separator, nil) || ""
case phrase
when Regexp
regex = phrase
else
regex = /#{Regexp.escape(phrase)}/i
end
return unless matches = text.match(regex)
phrase = matches[0]
unless separator.empty?
text.split(separator).each do |value|
if value.match?(regex)
phrase = value
break
end
end
end
first_part, second_part = text.split(phrase, 2)
prefix, first_part = cut_excerpt_part(:first, first_part, separator, options)
postfix, second_part = cut_excerpt_part(:second, second_part, separator, options)
affix = [
first_part,
!first_part.empty? ? separator : "",
phrase,
!second_part.empty? ? separator : "",
second_part
].join.strip
[prefix, affix, postfix].join
end
Defined in actionview/lib/action_view/helpers/text_helper.rb line 235
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionView::Helpers::TextHelper