split out logic for compressing message

Signed-off-by: Mattias Andrée <maandree@operamail.com>
This commit is contained in:
Mattias Andrée 2013-08-17 06:18:18 +02:00
parent 3bee0c375e
commit 5e15110754

View file

@ -872,12 +872,39 @@ class Ponysay():
print('%s %s' % ('ponysay', VERSION))
def __compressMessage(self, msg):
'''
This algorithm should give some result as cowsay's
@param msg:str The message
@return :str The message compressed
'''
buf = ''
last = ' '
CHARS = '\t \n'
for c in msg:
if (c in CHARS) and (last in CHARS):
if last == '\n':
buf += last
last = c
else:
buf += c
last = c
msg = buf.strip(CHARS)
buf = ''
for c in msg:
if (c != '\n') or (last != '\n'):
buf += c
last = c
return buf.replace('\n', '\n\n')
def __useImage(self, pony):
'''
Convert image to the ponysay format if it is a regular image
@param pony:str The pony file
@param pony:str The new pony file, or the old if it was already in the ponysay format
@param pony:str The pony file
@return :str The new pony file, or the old if it was already in the ponysay format
'''
if endswith(pony.lower(), '.png'):
pony = '\'' + pony.replace('\'', '\'\\\'\'') + '\''
@ -926,24 +953,7 @@ class Ponysay():
## This algorithm should give some result as cowsay's (according to tests)
if args.opts['-c'] is not None:
buf = ''
last = ' '
CHARS = '\t \n'
for c in msg:
if (c in CHARS) and (last in CHARS):
if last == '\n':
buf += last
last = c
else:
buf += c
last = c
msg = buf.strip(CHARS)
buf = ''
for c in msg:
if (c != '\n') or (last != '\n'):
buf += c
last = c
msg = buf.replace('\n', '\n\n')
msg = self.__compressMessage(msg)
## Print info
printinfo('pony file: ' + pony)