class ReeString::TruncateWords
def call(str, words_count, **opts)
def call(str, words_count, **opts) str = str.dup sep = opts[:separator] || /\s+/ sep = Regexp.escape(sep.to_s) unless Regexp === sep if str =~ /\A((?>.+?#{sep}){#{words_count - 1}}.+?)#{sep}.*/m $1 + (opts[:omission] || "...") else str end end