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

In Files

  • rubygems/text.rb

Class/Module Index [+]

Quicksearch

Gem::Text

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)
    else
      result << work.slice!(0, wrap)
    end
  end

  result << work if work.length.nonzero?
  result.join("\n").gsub(/^/, " " * indent)
end
            
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
          ].min
      d[j] = e
      e = x
    end

    d[m] = x
  end

  return x
end
            

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.