Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more

In Files

  • rubygems/text.rb

Class/Module Index [+]



A collection of text-wrangling methods

Public Instance Methods

format_text(text, wrap, indent=0) click to toggle source

Wraps text to wrap characters and optionally indents by indent characters

               # File rubygems/text.rb, line 12
def format_text(text, wrap, indent=0)
  result = []
  work = text.dup

  while work.length > wrap do
    if work =~ /^(.{0,#{wrap}})[ \n]/ then
      result << $1.rstrip
      work.slice!(0, $&.length)
      result << work.slice!(0, wrap)

  result << work if work.length.nonzero?
  result.join("\n").gsub(/^/, " " * indent)
levenshtein_distance(str1, str2) click to toggle source

This code is based directly on the Text gem implementation Returns a value representing the “cost” of transforming str1 into str2

               # File rubygems/text.rb, line 31
def levenshtein_distance str1, str2
  s = str1
  t = str2
  n = s.length
  m = t.length
  max = n/2

  return m if (0 == n)
  return n if (0 == m)
  return n if (n - m).abs > max

  d = (0..m).to_a
  x = nil

  n.times do |i|
    e = i+1

    m.times do |j|
      cost = (s[i] == t[j]) ? 0 : 1
      x = [
           d[j+1] + 1, # insertion
           e + 1,      # deletion
           d[j] + cost # substitution
      d[j] = e
      e = x

    d[m] = x

  return x

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.