From a414ca491d08c3e1a73c0dacbb5ff93cb265bb5e Mon Sep 17 00:00:00 2001 From: Rolux Date: Sun, 6 Jul 2008 12:21:55 +0200 Subject: [PATCH] off by one --- oxlib/text.py | 56 +++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/oxlib/text.py b/oxlib/text.py index 867d9b5..4978ebb 100644 --- a/oxlib/text.py +++ b/oxlib/text.py @@ -63,34 +63,34 @@ def wrap(text, width): ) 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() + 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]) + 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):