-q works as -f + added --f, --F and --q which are varidic variants of -f, -F and -q, respectivly + warn if -q is used with -f and -F but allow (but still warn if used) -q -f

This commit is contained in:
Mattias Andrée 2012-10-22 14:40:20 +02:00
parent a07dadb813
commit f6eae560b1
4 changed files with 114 additions and 30 deletions

View file

@ -1,3 +1,13 @@
Version 2.9
The option -q works like -f and -F, it takes one argument, and may be used multiple
times for more arguments.
The old option -q is renamed to --q.
The options --f and --F has been added.
Version 2.8 Version 2.8
New ponies: airheart, bastionyorsets, peppermoon, shiningarmorwedding, starlight, New ponies: airheart, bastionyorsets, peppermoon, shiningarmorwedding, starlight,

View file

@ -76,8 +76,8 @@ multiple times, and one of the will be selected randomly.
.B \-q, \-\-quote [\fIname\fP...] .B \-q, \-\-quote [\fIname\fP...]
By using this option, a pony will be printed with quotes from her in My Little Pony: By using this option, a pony will be printed with quotes from her in My Little Pony:
Friendship is Magic. The pony will be selected randomly, unless at least one pony Friendship is Magic. The pony will be selected randomly, unless at least one pony
is added as an argument after \fI-q\fP. If one or more ponies are added after \fI-q\fP is added as an argument to \fI-q\fP. If one or more ponies are added as an argument
the pony will be selected randomly from that set of ponies. to \fI-q\fP the pony will be selected randomly from that set of ponies.
.TP .TP
.B \-W, \-\-wrap \fIcolumn\fP .B \-W, \-\-wrap \fIcolumn\fP
The screen column where the message should be wrapped. The screen column where the message should be wrapped.

View file

@ -172,7 +172,7 @@ In versions earlier than version 2.0, the if the pony were a file name it had to
include a `@code{/}'. This is not longer required and any existing pony name include a `@code{/}'. This is not longer required and any existing pony name
supersedes file names. supersedes file names.
@item -F @item -F PONY
@itemx ++file PONY @itemx ++file PONY
@itemx ++pony PONY @itemx ++pony PONY
@opindex @option{-F} @opindex @option{-F}
@ -181,6 +181,54 @@ supersedes file names.
Just as @option{-F}, but it uses extra (non-MLP:FiM) ponies instead of standard Just as @option{-F}, but it uses extra (non-MLP:FiM) ponies instead of standard
(MLP:FiM) ponies (MLP:FiM) ponies
@item -q PONY
@itemx --quote PONY
@opindex @option{-q}
@opindex @option{--quote}
@cindex quotes
@cindex pony quotes
By using this option, a pony will be printed with quotes from her in My Little Pony:
Friendship is Magic. The pony will be selected randomly, unless at least one pony
is added as an argument to @option{-q}. If one or more ponies are added as an argument
to @option{-q}, the pony will be selected randomly from that set of ponies.
This option requires the extension @command{ponyquotes4ponysay}, which is included
by default since version 1.2.
The argument can be a file name, but only if it ends with @file{.pony}.
@item --f [PONY...]
@itemx --files [PONY...]
@itemx --ponies [PONY...]
@opindex @option{--f}
@opindex @option{--files}
@opindex @option{--ponies}
Variadic variant of @option{-f}, meaning that all arguments added after this one
will parsed as an argument to this option. Additionally, those options are added
to @option{-f}.
@item --F [PONY...]
@itemx ++files [PONY...]
@itemx ++ponies [PONY...]
@opindex @option{--F}
@opindex @option{++files}
@opindex @option{++ponies}
Variadic variant of @option{-F}, meaning that all arguments added after this one
will parsed as an argument to this option. Additionally, those options are added
to @option{-F}.
@item --q [PONY...]
@itemx --quotes [PONY...]
@opindex @option{--q}
@opindex @option{--quotes}
@cindex quotes
@cindex pony quotes
Variadic variant of @option{-q}, meaning that all arguments added after this one
will parsed as an argument to this option. Additionally, those options are added
to @option{-q}.
An important feature of this options, is that you can but it in the end of the
command line, without any argument to get a quote from any pony with a quote.
@item -b STYLE @item -b STYLE
@itemx --bubble STYLE @itemx --bubble STYLE
@itemx --balloon STYLE @itemx --balloon STYLE
@ -192,19 +240,6 @@ balloon name printed by @option{ponysay -B}. This option can be used multiple
times to specify a set of styles from which one will be selected randomly. If no times to specify a set of styles from which one will be selected randomly. If no
balloon style is specified a fallback style will be used. balloon style is specified a fallback style will be used.
@item -q [PONY...]
@itemx --quote [PONY...]
@opindex @option{-q}
@opindex @option{--quote}
By using this option, a pony will be printed with quotes from her in My Little Pony:
Friendship is Magic. The pony will be selected randomly, unless at least one pony
is added as an argument after @option{-q}. If one or more ponies are added after
@option{-q}, the pony will be selected randomly from that set of ponies.
This option requires the extension @command{ponyquotes4ponysay}, which is included
by default since version 1.2.
The argument can be a file name, but only if it ends with @file{.pony}.
@item -W COLUMN @item -W COLUMN
@itemx --wrap COLUMN @itemx --wrap COLUMN
@opindex @option{-W} @opindex @option{-W}
@ -1947,6 +1982,18 @@ sequences.
@cindex versions @cindex versions
@cindex previous releases @cindex previous releases
@heading Version 2.9
@itemize @bullet
@item
The option @option{-q} works like @option{-f} and @option{-F}, it takes one argument, and
may be used multiple times for more arguments.
@item
The old option @option{-q} is renamed to @option{--q}.
@item
The options @option{--f} and @option{--F} has been added.
@end itemize
@heading Version 2.8 @heading Version 2.8
@itemize @bullet @itemize @bullet
@item @item

View file

@ -47,6 +47,14 @@ programs by default, report them to Princess Celestia so she can banish them to
def print(text = '', end = '\n'): def print(text = '', end = '\n'):
sys.stdout.buffer.write((str(text) + end).encode('utf-8')) sys.stdout.buffer.write((str(text) + end).encode('utf-8'))
'''
stderr equivalent to print()
@param text:str The text to print (empty string is default)
@param end:str The appendix to the text to print (line breaking is default)
'''
def printerr(text = '', end = '\n'):
sys.stderr.buffer.write((str(text) + end).encode('utf-8'))
''' '''
Checks whether a text ends with a specific text, but has more Checks whether a text ends with a specific text, but has more
@ -82,18 +90,23 @@ class Ponysay():
global extraponydirs global extraponydirs
## Emulate termial capabilities ## Emulate termial capabilities
if args.opts['-X'] is not None: if args.opts['-X'] is not None: (linuxvt, usekms) = (False, False)
linuxvt = False elif args.opts['-V'] is not None: (linuxvt, usekms) = (True, False)
usekms = False elif args.opts['-K'] is not None: (linuxvt, usekms) = (True, True)
elif args.opts['-V'] is not None:
linuxvt = True
usekms = False
elif args.opts['-K'] is not None:
linuxvt = True
usekms = True
ponydirs = vtponydirs if linuxvt and not usekms else xponydirs ponydirs = vtponydirs if linuxvt and not usekms else xponydirs
extraponydirs = extravtponydirs if linuxvt and not usekms else extraxponydirs extraponydirs = extravtponydirs if linuxvt and not usekms else extraxponydirs
## Variadic variants of -f, -F and -q
if args.opts['--f'] is not None:
if args.opts['-f'] is not None: args.opts['-f'] += args.opts['--f']
else: args.opts['-f'] = args.opts['--f']
if args.opts['--F'] is not None:
if args.opts['-F'] is not None: args.opts['-F'] += args.opts['--F']
else: args.opts['-F'] = args.opts['--F']
if args.opts['--q'] is not None:
if args.opts['-q'] is not None: args.opts['-q'] += args.opts['--q']
else: args.opts['-q'] = args.opts['--q']
## Run modes ## Run modes
if args.opts['-h'] is not None: args.help() if args.opts['-h'] is not None: args.help()
elif args.opts['--quoters'] is not None: self.quoters() elif args.opts['--quoters'] is not None: self.quoters()
@ -126,8 +139,19 @@ class Ponysay():
mode += '$/= $$\\= $' mode += '$/= $$\\= $'
## The stuff ## The stuff
if args.opts['-q'] is not None: self.quote(args) if args.opts['-q'] is not None:
else: self.print_pony(args) warn = (args.opts['-f'] is not None) or (args.opts['-F'] is not None)
if (len(args.opts['-q']) == 1) and ((args.opts['-q'][0] == '-f') or (args.opts['-q'][0] == '-F')):
warn = True
if args.opts['-q'][0] == '-f':
args.opts['-q'] = args.files
if args.opts['-f'] is not None:
args.opts['-q'] += args.opts['-f']
self.quote(args)
if warn:
printerr('-q cannot be used at the same time as -f or -F.')
else:
self.print_pony(args)
############################################## ##############################################
@ -2270,8 +2294,8 @@ usage_saythink = '\033[34;1m(ponysay | ponythink)\033[21;39m'
usage_common = '[-c] [-W\033[4mCOLUMN\033[24m] [-b\033[4mSTYLE\033[24m]' usage_common = '[-c] [-W\033[4mCOLUMN\033[24m] [-b\033[4mSTYLE\033[24m]'
usage_listhelp = '(-l | -L | -B | +l | +L | -v | -h)' usage_listhelp = '(-l | -L | -B | +l | +L | -v | -h)'
usage_file = '[-f\033[4mPONY\033[24m]* [[--] \033[4mmessage\033[24m]' usage_file = '[-f\033[4mPONY\033[24m]* [[--] \033[4mmessage\033[24m]'
usage_xfile = '[-F\033[4mPONY\033[24m]* [[--] \033[4mmessage\033[24m]' usage_xfile = '(-F\033[4mPONY\033[24m)* [[--] \033[4mmessage\033[24m]'
usage_quote = '-q [\033[4mPONY\033[24m*]' usage_quote = '(-q \033[4mPONY\033[24m)*'
usage = '%s %s\n%s %s %s\n%s %s %s\n%s %s %s' % (usage_saythink, usage_listhelp, usage = '%s %s\n%s %s %s\n%s %s %s\n%s %s %s' % (usage_saythink, usage_listhelp,
usage_saythink, usage_common, usage_file, usage_saythink, usage_common, usage_file,
@ -2325,7 +2349,10 @@ opts.add_argumented( ['-W', '--wrap'], arg = 'COLUMN', help =
opts.add_argumented( ['-b', '--bubble', '--balloon'], arg = 'STYLE', help = 'Select a balloon style.') opts.add_argumented( ['-b', '--bubble', '--balloon'], arg = 'STYLE', help = 'Select a balloon style.')
opts.add_argumented( ['-f', '--file', '--pony'], arg = 'PONY', help = 'Select a pony.\nEither a file name or a pony name.') opts.add_argumented( ['-f', '--file', '--pony'], arg = 'PONY', help = 'Select a pony.\nEither a file name or a pony name.')
opts.add_argumented( ['-F', '++file', '++pony'], arg = 'PONY', help = 'Select a non-MLP:FiM pony.') opts.add_argumented( ['-F', '++file', '++pony'], arg = 'PONY', help = 'Select a non-MLP:FiM pony.')
opts.add_variadic( ['-q', '--quote'], arg = 'PONY', help = 'Select a ponies which will quote themself.') opts.add_argumented( ['-q', '--quote'], arg = 'PONY', help = 'Select a pony which will quote herself.')
opts.add_variadic( ['--f', '--files', '--ponies'], arg = 'PONY')
opts.add_variadic( ['--F', '++files', '++ponies'], arg = 'PONY')
opts.add_variadic( ['--q', '--quotes'], arg = 'PONY')
opts.parse() opts.parse()