instance method
excerpt
Ruby on Rails 6.0.6
Since v2.2.3Signature
excerpt(text, phrase, options = {})
Extracts an excerpt from text that matches the first instance of phrase. The :radius option expands the excerpt on each side of the first occurrence of phrase by the number of characters defined in :radius (which defaults to 100). If the excerpt radius overflows the beginning or end of the text, then the :omission option (which defaults to “…”) will be prepended/appended accordingly. Use the :separator option to choose the delimitation. The resulting string will be stripped in any case. If the phrase isn’t found, nil is returned.
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 175
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, separator, phrase, separator, second_part].join.strip
[prefix, affix, postfix].join
end
Defined in actionview/lib/action_view/helpers/text_helper.rb line 175
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionView::Helpers::TextHelper