A collection of text-wrangling methods
Wraps text to wrap characters and optionally indents by indent characters
# File lib/rubygems/text.rb, line 12 12: def format_text(text, wrap, indent=0) 13: result = [] 14: work = text.dup 15: 16: while work.length > wrap do 17: if work =~ /^(.{0,#{wrap}})[ \n]/ then 18: result << $1.rstrip 19: work.slice!(0, $&.length) 20: else 21: result << work.slice!(0, wrap) 22: end 23: end 24: 25: result << work if work.length.nonzero? 26: result.join("\n").gsub(/^/, " " * indent) 27: end
This code is based directly on the Text gem implementation Returns a value representing the “cost” of transforming str1 into str2
# File lib/rubygems/text.rb, line 31 31: def levenshtein_distance str1, str2 32: s = str1 33: t = str2 34: n = s.length 35: m = t.length 36: max = n/2 37: 38: return m if (0 == n) 39: return n if (0 == m) 40: return n if (n - m).abs > max 41: 42: d = (0..m).to_a 43: x = nil 44: 45: n.times do |i| 46: e = i+1 47: 48: m.times do |j| 49: cost = (s[i] == t[j]) ? 0 : 1 50: x = [ 51: d[j+1] + 1, # insertion 52: e + 1, # deletion 53: d[j] + cost # substitution 54: ].min 55: d[j] = e 56: e = x 57: end 58: 59: d[m] = x 60: end 61: 62: return x 63: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.