The Ruby Way, Second Edition: Solutions and Techniques in Ruby Programming (2nd Edition)
|
|
2.40. Wrapping Lines of Text
Occasionally we may want to take long text lines and print them within margins of our own choosing. The code fragment shown here accomplishes this, splitting only on word boundaries and honoring tabs (but not honoring backspaces or preserving tabs): str = <<-EOF When in the Course of human events it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect for the opinions of mankind requires that they should declare the causes which impel them to the separation. EOF max = 20 line = 0 out = [""] input = str.gsub(/\n/," ") words = input.split(" ") while input != "" word = words.shift break if not word if out[line].length + word.length > max out[line].squeeze!(" ") line += 1 out[line] = "" end out[line] << word + " " end out.each {|line| puts line} # Prints 24 very short lines
The Format library also handles this and similar operations. Search for it online. |
|
|