Method: StringExt.word_wrap

Defined in:
lib/vex/base/string/string_ext.rb

.word_wrap(line, line_len) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/vex/base/string/string_ext.rb', line 81

def self.word_wrap(line, line_len)
  r = []
  while line.length > line_len
    # find last space in the first line_len characters. Failing that we
    # take the *first* (sic!) space in the entire line.
    firstline = line[0..line_len]
    space_idx = firstline.rindex(/\s/) || line.index(/\s/, line_len)

    if !space_idx
      r << line
      line = ""
    else
      r << line[0...space_idx]
      line = line[space_idx+1..-1]
    end
  end

  r << line unless line.blank?
  r.join("\n")
end