aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2012-08-21 14:36:01 +0200
committerMattias Andrée <maandree@operamail.com>2012-08-21 14:36:01 +0200
commit16763d07d3296afb651adc524ded365dc3efa005 (patch)
tree9aba7044fade8f0033b36f4fd602d96b03920fd2
parent4a55d12917eea7edb0d9d49c8d9b0564a9cbbcba (diff)
downloadponysay-16763d07d3296afb651adc524ded365dc3efa005.tar.gz
ponysay-16763d07d3296afb651adc524ded365dc3efa005.tar.bz2
ponysay-16763d07d3296afb651adc524ded365dc3efa005.zip
balloon class used for balloon style customisation
-rwxr-xr-xponysay65
1 files changed, 52 insertions, 13 deletions
diff --git a/ponysay b/ponysay
index 1f99579..a5b6030 100755
--- a/ponysay
+++ b/ponysay
@@ -684,6 +684,51 @@ class ArgParser():
'''
+Balloon format class
+'''
+class Balloon():
+ '''
+ Constructor
+ '''
+ def __init__(self, link, linkmirror, ww, ee, nw, nnw, n, nne, ne, nee, e, see, se, sse, s, ssw, sw, sww, w, nww):
+ (self.link, self.linkmirror) = (link, linkmirror)
+ (self.ww, self.ee) = (ww, ee)
+ (self.nw, self.ne, self.se, self.sw) = (nw, ne, se, sw)
+ (self.nnw, self.n, self.nne) = (nnw, n, nne)
+ (self.nee, self.e, self.see) = (nee, e, see)
+ (self.sse, self.s, self.ssw) = (sse, s, ssw)
+ (self.sww, self.w, self.nww) = (sww, w, nww)
+
+ minE = len(max([ne, nee, e, see, se, ee], key = len))
+ minW = len(max([nw, nww, e, sww, sw, ww], key = len))
+ minN = len(max([ne, nne, n, nnw, nw], key = len))
+ minS = len(max([se, sse, s, ssw, sw], key = len))
+
+ self.minwidth = minE + minE
+ self.minheight = minN + minS
+
+
+ '''
+ Generates a balloon with a message
+ '''
+ def get(self, minw, minh, lines, lencalc):
+ h = 4 + lencalc(lines)
+ w = 6 + lencalc(max(lines, key = lencalc))
+ if w < minw: w = minw
+ if h < minh: h = minh
+
+ rc = '/' + '-' * (w - 2) + '\\\n'
+ rc += '|' + ' ' * (w - 2) + '|\n'
+ for line in lines:
+ rc += '| ' + line + ' ' * (w - lencalc(line) - 6) + ' |\n'
+ rc += '|' + ' ' * (w - 2) + '|\n'
+ rc += '\\' + '-' * (w - 2) + '/'
+
+ return rc
+
+
+
+'''
Replacement for cowsay
'''
class Backend():
@@ -697,7 +742,12 @@ class Backend():
self.wrapcolumn = wrapcolumn
self.width = width
- self.link = {'\\' : '\\', '/' : '/'} if not isthink else {'\\' : 'o', '/' : 'o'}
+ if isthink:
+ self.balloon = Balloon('o', 'o', '( ', ' )', [' _'], ['_'], ['_'], ['_'], ['_ '], ' )', ' )', ' )', ['- '], ['-'], ['-'], ['-'], ['- '], '( ', '( ', '( ')
+ else:
+ self.balloon = Balloon('\\', '/', '< ', ' >', [' _'], ['_'], ['_'], ['_'], ['_ '], ' \\', ' |', ' //', ['- '], ['-'], ['-'], ['-'], ['- '], '\\ ', '| ', '/ ')
+
+ self.link = {'\\' : self.balloon.link, '/' : self.balloon.linkmirror}
self.output = ''
self.pony = None
@@ -965,19 +1015,8 @@ class Backend():
if wrap is not None:
msg = self.__wrapMessage(msg, wrap)
lines = msg.split('\n')
- h = 4 + len(lines)
- w = 6 + len(max(lines, key = len))
- if w < width: w = width
- if h < height: h = height
- rc = '/' + '-' * (w - 2) + '\\\n'
- rc += '|' + ' ' * (w - 2) + '|\n'
- for line in lines:
- rc += '| ' + line + ' ' * (w - len(line) - 6) + ' |\n'
- rc += '|' + ' ' * (w - 2) + '|\n'
- rc += '\\' + '-' * (w - 2) + '/'
-
- return rc
+ return self.balloon.get(width, height, lines, self.__len)
'''