aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xponysay.py61
1 files changed, 34 insertions, 27 deletions
diff --git a/ponysay.py b/ponysay.py
index f8b7723..97c3697 100755
--- a/ponysay.py
+++ b/ponysay.py
@@ -18,7 +18,7 @@ from subprocess import Popen, PIPE
'''
The version of ponysay
'''
-VERSION = "2.0-alpha"
+VERSION = '2.0-alpha'
'''
@@ -37,6 +37,7 @@ for ponydir in _ponydirs:
if os.path.isdir(ponydir):
ponydirs.append(ponydir)
+
'''
The directories where quotes files are stored
'''
@@ -48,9 +49,12 @@ for quotedir in _quotedirs:
+'''
+Argument parsing
+'''
parser = argparse.ArgumentParser(description = 'Ponysay, like cowsay with ponies')
-parser.add_argument('-v', '--version', action = 'version', version = '%s %s' % ("ponysay", VERSION))
+parser.add_argument('-v', '--version', action = 'version', version = '%s %s' % ('ponysay', VERSION))
parser.add_argument('-l', '--list', action = 'store_true', dest = 'list', help = 'list pony files')
parser.add_argument('-L', '--altlist', action = 'store_true', dest = 'linklist', help = 'list pony files with alternatives')
parser.add_argument( '--quoters', action = 'store_true', dest = 'quoters', help = 'list ponies with quotes (visible in -l and -L)') # for shell completions
@@ -97,6 +101,21 @@ class ponysay():
return ponies
+ '''
+ Returns one .pony-file with full path, names is filter for names, also accepts filepaths
+ '''
+ def __getponypath(self, names = None):
+ ponies = {}
+
+ for name in names:
+ if os.path.isfile(name):
+ return name
+
+ for ponydir in ponydirs:
+ for ponyfile in os.listdir(ponydir):
+ ponies[ponyfile[:-5]] = ponydir + ponyfile
+
+ return ponies[names[random.randrange(0, len(names))]]
'''
Returns a list with all (pony, quote file) pairs
@@ -123,7 +142,7 @@ class ponysay():
Lists the available ponies
'''
def list(self):
- termsize = Popen(['stty', 'size'], stdout=PIPE).communicate()[0].decode('utf8', 'replace')[:-1].split(" ")
+ termsize = Popen(['stty', 'size'], stdout=PIPE).communicate()[0].decode('utf8', 'replace')[:-1].split(' ')
termsize = [int(item) for item in termsize]
quoters = self.__quoters()
@@ -140,20 +159,20 @@ class ponysay():
x = 0
for pony in ponies:
spacing = ' ' * (width - len(pony))
- print(('\033[1m' + pony + '\033[21m' if (pony in quoters) else pony) + spacing, end="") # Print ponyfilename
+ print(('\033[1m' + pony + '\033[21m' if (pony in quoters) else pony) + spacing, end='') # Print ponyfilename
x += width
if x > (termsize[1] - width): # If too wide, make new line
print()
x = 0
- print("\n");
+ print('\n');
'''
Lists the available ponies with alternatives inside brackets
'''
def linklist(self):
- termsize = Popen(['stty', 'size'], stdout=PIPE).communicate()[0].decode('utf8', 'replace')[:-1].split(" ")
+ termsize = Popen(['stty', 'size'], stdout=PIPE).communicate()[0].decode('utf8', 'replace')[:-1].split(' ')
termsize = [int(item) for item in termsize]
quoters = self.__quoters()
@@ -164,11 +183,11 @@ class ponysay():
files = os.listdir(ponydir)
files = [item[:-5] for item in files] # remove .pony from file name
files.sort()
- pairs = [(item, os.readlink(ponydir + item + ".pony") if os.path.islink(ponydir + item + ".pony") else '') for item in files]
+ pairs = [(item, os.readlink(ponydir + item + '.pony') if os.path.islink(ponydir + item + '.pony') else '') for item in files]
ponymap = {}
for pair in pairs:
- if pair[1] == "":
+ if pair[1] == '':
if pair[0] not in ponymap:
ponymap[pair[0]] = []
else:
@@ -189,16 +208,16 @@ class ponysay():
syms = ponymap[pony]
if len(syms) > 0:
w += 2 + len(syms)
- item += " ("
+ item += ' ('
first = True
for sym in syms:
w += len(sym)
if not first:
- item += " "
+ item += ' '
else:
first = False
item += '\033[1m' + sym + '\033[21m' if (sym in quoters) else sym
- item += ")"
+ item += ')'
ponies.append(item)
widths.append(w)
if width < w:
@@ -210,13 +229,13 @@ class ponysay():
for pony in ponies:
spacing = ' ' * (width - widths[index])
index += 1
- print(pony + spacing, end="") # Print ponyfilename
+ print(pony + spacing, end='') # Print ponyfilename
x += width
if x > (termsize[1] - width): # If too wide, make new line
print()
x = 0
- print("\n");
+ print('\n');
'''
@@ -256,21 +275,9 @@ class ponysay():
else:
msg = args.message
+ pony = self.__getponypath(args.pony)
- if args.pony == None:
- ponies = [] # Make array with direct paths to all ponies
- for ponydir in ponydirs:
- for ponyfile in os.listdir(ponydir):
- ponies.append(ponydir + ponyfile)
-
- pony = ponies[random.randrange(0, len(ponies) - 1)] # Select random pony
-
- else:
- for ponydir in ponydirs:
- if os.path.isfile(ponydir + args.pony[0]):
- pony = ponydir + args.pony[0]
-
- os.system('cowsay -f ' + pony + ' "' + msg + '"')
+ os.system('cowsay -f ' + pony + ' \'' + msg + '\'')