module ActionView::Helpers::TextHelper

def word_wrap(text, *args)

word_wrap('Once upon a time', 8) # => Once upon\na time
+line_width+ as its optional second parameter:
You can still use word_wrap with the old API that accepts the

# => Once\nupon\na\ntime
word_wrap('Once upon a time', :line_width => 1)

# => Once upon\na time
word_wrap('Once upon a time', :line_width => 8)

# => Once upon a time, in a kingdom called Far Far Away, a king fell ill, and finding\n a successor to the throne turned out to be more trouble than anyone could have\n imagined...
word_wrap('Once upon a time, in a kingdom called Far Far Away, a king fell ill, and finding a successor to the throne turned out to be more trouble than anyone could have imagined...')

# => Once upon a time
word_wrap('Once upon a time')

==== Examples

(which is 80 by default).
breaks on the first whitespace character that does not exceed +line_width+
Wraps the +text+ into lines no longer than +line_width+ width. This method
def word_wrap(text, *args)
  options = args.extract_options!
  unless args.blank?
    options[:line_width] = args[0] || 80
  end
  options.reverse_merge!(:line_width => 80)
  text.split("\n").collect do |line|
    line.length > options[:line_width] ? line.gsub(/(.{1,#{options[:line_width]}})(\s+|$)/, "\\1\n").strip : line
  end * "\n"
end