Sha256: 9b1e835fc9cc94fdf095500f7b310360daa154ba023337e61a4542082946c527

Contents?: true

Size: 1.46 KB

Versions: 19

Compression:

Stored size: 1.46 KB

Contents

class String
  # Truncates a given +text+ after a given <tt>length</tt> if +text+ is longer than <tt>length</tt>:
  #
  #   "Once upon a time in a world far far away".truncate(27)
  #   # => "Once upon a time in a wo..."
  #
  # The last characters will be replaced with the <tt>:omission</tt> string (defaults to "...")
  # for a total length not exceeding <tt>:length</tt>:
  #
  #   "Once upon a time in a world far far away".truncate(27, :separator => ' ')
  #   # => "Once upon a time in a..."
  #
  # Pass a <tt>:separator</tt> to truncate +text+ at a natural break:
  #
  #   "And they found that many people were sleeping better.".truncate(25, :omission => "... (continued)")
  #   # => "And they f... (continued)"
  def truncate(length, options = {})
    text = self.dup
    chars        = text.respond_to?(:mb_chars)      ? text.mb_chars            : text
    omission     = options[:omission] || "..."
    omission_len = omission.respond_to?(:mb_chars)  ? omission.mb_chars.length : omission.length
    length_with_room_for_omission = length - omission_len

    if (separator = options[:separator])
      separator_chars = separator.respond_to?(:mb_chars) ? separator.to_s.mb_chars  : separator.to_s
      stop = chars.rindex(separator_chars, length_with_room_for_omission) || length_with_room_for_omission
    else
      stop = length_with_room_for_omission
    end

    (chars.length > length ? chars[0...stop] + omission : text).to_s
  end unless method_defined?(:truncate)
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
gorillib-0.6.0 lib/gorillib/string/truncate.rb
gorillib-0.5.2 lib/gorillib/string/truncate.rb
gorillib-0.5.0 lib/gorillib/string/truncate.rb
gorillib-0.4.2 lib/gorillib/string/truncate.rb
gorillib-0.4.2pre lib/gorillib/string/truncate.rb
gorillib-0.4.0pre lib/gorillib/string/truncate.rb
gorillib-0.4.1pre lib/gorillib/string/truncate.rb
gorillib-0.1.11 lib/gorillib/string/truncate.rb
gorillib-0.1.9 lib/gorillib/string/truncate.rb
gorillib-0.1.8 lib/gorillib/string/truncate.rb
gorillib-0.1.7 lib/gorillib/string/truncate.rb
gorillib-0.1.6 lib/gorillib/string/truncate.rb
gorillib-0.1.5 lib/gorillib/string/truncate.rb
gorillib-0.1.4 lib/gorillib/string/truncate.rb
gorillib-0.1.3 lib/gorillib/string/truncate.rb
gorillib-0.1.2 lib/gorillib/string/truncate.rb
gorillib-0.1.1 lib/gorillib/string/truncate.rb
gorillib-0.1.0 lib/gorillib/string/truncate.rb
gorillib-0.0.8 lib/gorillib/string/truncate.rb