PERF: Optimize ActionView::Helpers::TextHelper#excerpt.

This commit is contained in:
Guo Xiang Tan 2020-08-06 09:53:10 +08:00
parent 801a078105
commit ee5d8fba0c
No known key found for this signature in database
GPG Key ID: FBD110179AAC1F20

View File

@ -9,6 +9,27 @@ class Search
class TextHelper
extend ActionView::Helpers::TextHelper
private
# TODO: Remove when https://github.com/rails/rails/pull/39979 is merged
# For a 10_000 words string, speeds up excerpts by 85X.
def self.cut_excerpt_part(part_position, part, separator, options)
return "", "" unless part
radius = options.fetch(:radius, 100)
omission = options.fetch(:omission, "...")
if separator != ""
part = part.split(separator)
part.delete("")
end
affix = part.length > radius ? omission : ""
part = part.public_send(part_position == :first ? :last : :first, radius)
part = part.join(separator) if separator != ""
return affix, part
end
end
attr_reader(