1 """Meat Engine Word Wrap code
2
3 Modular word wrapping routine"""
4
5
6
8 """ to lay out text using a fixed width font, measure the text
9 width in characters.
10 """
11 return len(string)
12
14 lines=[]
15 paragraphs=string.split("\n")
16
17 for p in paragraphs:
18
19
20 words=p.split()
21 workingString=""
22 while words:
23 newStr=workingString
24 if newStr:
25 newStr+=" "
26 oneWord=False
27 else:
28 oneWord=True
29 newStr+=words[0]
30
31 if strLenFunc(newStr)>paragraphWidth and not oneWord:
32
33 lines.append(workingString)
34 workingString=""
35 else:
36 workingString=newStr
37 words=words[1:]
38 if workingString:
39 lines.append(workingString)
40 if insertParagraphBreak:
41 lines.append("")
42 return lines
43
44
46 """reverses the wrap function - handy for reformatting text that's
47 wrapped in an editor"""
48 paragraphs=[]
49
50 lines=[x.strip() for x in string.split("\n")]
51
52 workingParagraph=""
53 for s in lines:
54 if (not s) and workingParagraph:
55 paragraphs.append(workingParagraph)
56 workingParagraph=""
57 if workingParagraph:
58 workingParagraph+=" "
59 workingParagraph+=s
60
61 return '\n'.join(paragraphs)
62
63
64
65
66 if __name__=="__main__":
67
68 text="""
69 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque
70 vitae lectus. Cras mattis enim. Mauris ac nisl eu lorem condimentum
71 convallis. Nunc vestibulum est. Curabitur hendrerit egestas
72 massa. Praesent varius, risus ac interdum condimentum, felis mi
73 tincidunt elit, nec hendrerit lectus nisi sit amet est. In
74 diam. Suspendisse aliquet hendrerit lacus. Integer quis magna ut arcu
75 pulvinar dignissim. Suspendisse potenti. Mauris congue augue id
76 elit. Class aptent taciti sociosqu ad litora torquent per conubia
77 nostra, per inceptos hymenaeos. Ut interdum mollis felis. Suspendisse
78 pharetra lorem nec mi. Nulla blandit. Duis congue.
79
80 Donec vel orci a nisi malesuada porta. Fusce nonummy interdum
81 nunc. Sed venenatis cursus ligula. Proin rhoncus velit sed
82 ligula. Cras sollicitudin diam id mi. In ligula. Morbi turpis pede,
83 euismod id, dictum et, aliquet sed, felis. Praesent metus. Nunc
84 dapibus condimentum libero. Nulla ac sapien vel neque tincidunt
85 lacinia. Phasellus ipsum. Nunc eu ipsum. Mauris erat felis, vulputate
86 ut, tempus nec, pulvinar et, purus. Nunc non mi. Vivamus dignissim
87 neque quis dui.
88
89 Pellentesque id neque. Vivamus malesuada neque sit amet velit. Fusce
90 ut odio. Etiam cursus, turpis at aliquam viverra, elit lectus faucibus
91 sapien, sit amet lobortis justo urna sed ligula. Nunc pharetra gravida
92 dolor. Class aptent taciti sociosqu ad litora torquent per conubia
93 nostra, per inceptos hymenaeos. Aliquam erat volutpat. Ut malesuada
94 mauris. Praesent mattis metus tempor lectus. Suspendisse venenatis
95 placerat justo. Nam tristique, risus ac lacinia ultricies, nisl odio
96 facilisis orci, eu commodo velit magna ut sem. Sed sollicitudin
97 malesuada nunc. Cras non massa. Fusce a enim sed odio tincidunt
98 tempus. Sed blandit est ac sapien.
99
100 Vestibulum ante ipsum primis in faucibus orci luctus et ultrices
101 posuere cubilia Curae; Vestibulum molestie, eros at placerat mattis,
102 diam ipsum scelerisque massa, vitae molestie ipsum magna id
103 magna. Pellentesque habitant morbi tristique senectus et netus et
104 malesuada fames ac turpis egestas. Phasellus metus mi, commodo auctor,
105 sollicitudin eget, placerat nec, urna. Cras enim lorem, congue eget,
106 ornare quis, bibendum vitae, magna. Integer varius. Pellentesque
107 auctor, metus a dictum viverra, purus magna placerat purus, nec
108 volutpat est lorem a tellus. Pellentesque habitant morbi tristique
109 senectus et netus et malesuada fames ac turpis egestas. Sed vehicula
110 posuere neque. Nam commodo rhoncus diam. Vestibulum ornare. Nunc metus
111 erat, egestas sed, semper at, vestibulum vitae, tellus. Integer augue
112 felis, consequat vel, tincidunt quis, accumsan sit amet, odio. Sed
113 mollis, leo sit amet sagittis imperdiet, justo risus dictum orci, a
114 dapibus lorem pede laoreet sem. Vivamus pretium. Mauris vel dolor a
115 ligula congue convallis. Proin mauris metus, luctus sed, venenatis at,
116 hendrerit nec, augue. Nullam massa magna, feugiat ut, ornare in,
117 aliquet non, mauris.
118
119 Nulla facilisi. Cras at libero. Cras mi. Maecenas purus. Donec at
120 augue. Nulla aliquam. Mauris id risus luctus diam ornare
121 ornare. Praesent commodo porttitor leo. In porttitor sollicitudin
122 dolor. Proin eleifend nulla at risus. Nulla commodo nisi. Integer ut
123 enim.
124 """
125
126 unwrappedText=unwrap(text)
127 print unwrappedText
128
129 for width in range(5,65,5):
130 print "WORD WRAP TEST (%d)"%width
131 print "="*40
132
133 wrappedText=wrap(unwrappedText, width)
134 print '\n'.join(wrappedText)
135
136 print
137