wrapString
This commit is contained in:
parent
da35e9bc32
commit
55a3d61139
2 changed files with 31 additions and 32 deletions
32
oxlib/str.py
32
oxlib/str.py
|
@ -1,32 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
|
|
||||||
def wrap(string, length, separator, balance):
|
|
||||||
if balance:
|
|
||||||
# balance lines: test if same number of lines
|
|
||||||
# can be achieved with a shorter line length
|
|
||||||
lines = wrap(string, length, separator, False).split(separator)
|
|
||||||
if len(lines) > 1:
|
|
||||||
while length > max(map(lambda x : len(x), string.split(' '))):
|
|
||||||
length -= 1
|
|
||||||
if len(wrap(string, length, separator, False).split(separator)) > len(lines):
|
|
||||||
length += 1
|
|
||||||
break
|
|
||||||
words = string.split(' ')
|
|
||||||
lines = ['']
|
|
||||||
for word in words:
|
|
||||||
if len(lines[len(lines) - 1] + word + ' ') <= length + 1:
|
|
||||||
# word fits in current line
|
|
||||||
lines[len(lines) - 1] += word + ' ';
|
|
||||||
else:
|
|
||||||
if len(word) <= length:
|
|
||||||
# word fits in next line
|
|
||||||
lines.append(word + ' ')
|
|
||||||
else:
|
|
||||||
# word is longer than line
|
|
||||||
position = length - len(lines[len(lines) - 1]) + 1
|
|
||||||
lines[len(lines) - 1] += word[0:position]
|
|
||||||
for i in range(position, len(word), length):
|
|
||||||
lines.append(word[i:i+length]);
|
|
||||||
lines[len(lines) - 1] += ' '
|
|
||||||
return separator.join(lines).strip()
|
|
|
@ -65,6 +65,37 @@ def wrap(text, width):
|
||||||
text.split(' ')
|
text.split(' ')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def wrapString(string, length, separator, balance):
|
||||||
|
if balance:
|
||||||
|
# balance lines: test if same number of lines
|
||||||
|
# can be achieved with a shorter line length
|
||||||
|
lines = wrapString(string, length, separator, False).split(separator)
|
||||||
|
if len(lines) > 1:
|
||||||
|
while length > max(map(lambda x : len(x), string.split(' '))):
|
||||||
|
length -= 1
|
||||||
|
if len(wrapString(string, length, separator, False).split(separator)) > len(lines):
|
||||||
|
length += 1
|
||||||
|
break
|
||||||
|
words = string.split(' ')
|
||||||
|
lines = ['']
|
||||||
|
for word in words:
|
||||||
|
if len(lines[len(lines) - 1] + word + ' ') <= length + 1:
|
||||||
|
# word fits in current line
|
||||||
|
lines[len(lines) - 1] += word + ' ';
|
||||||
|
else:
|
||||||
|
if len(word) <= length:
|
||||||
|
# word fits in next line
|
||||||
|
lines.append(word + ' ')
|
||||||
|
else:
|
||||||
|
# word is longer than line
|
||||||
|
position = length - len(lines[len(lines) - 1]) + 1
|
||||||
|
lines[len(lines) - 1] += word[0:position]
|
||||||
|
for i in range(position, len(word), length):
|
||||||
|
lines.append(word[i:i+length]);
|
||||||
|
lines[len(lines) - 1] += ' '
|
||||||
|
return separator.join(lines).strip()
|
||||||
|
|
||||||
|
|
||||||
def truncateString(s, num):
|
def truncateString(s, num):
|
||||||
"""Truncates a string after a certain number of chacters, but ends with a word
|
"""Truncates a string after a certain number of chacters, but ends with a word
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue