# Copyright (c) 2004-5 Marek Hnilica. All rights reserved. # Module that replaces string.capwords. # Distributed under GPL version 2, or (at your option) later import string def BetterCapword(text): newtext=[] IsToUpper=1 Pos=0 ListText=list(text) for i in ListText: if not (i in string.ascii_letters): # We don't want an apostrophe to be considered as a separator if i=="'": newtext.append('\'') else: newtext.append(i) IsToUpper=1 else: if IsToUpper: Broken=0 if (Pos>1) and (ListText[Pos-1] !=' '): TestedPos=Pos-2 while TestedPos!=0: if ListText[TestedPos]==' ': break else: if ListText[TestedPos] in string.ascii_letters: Broken=1 newtext.append(i) break TestedPos-=1 if not Broken: newtext.append(string.capitalize(i)) IsToUpper=0 else: newtext.append(i) Pos+=1 return string.join(newtext,'')