diff options
Diffstat (limited to '_action/splitappend.py')
| -rw-r--r-- | _action/splitappend.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/_action/splitappend.py b/_action/splitappend.py new file mode 100644 index 0000000..77008e2 --- /dev/null +++ b/_action/splitappend.py @@ -0,0 +1,26 @@ +# coding: utf-8 + +import argparse + + +class SplitAppendAction(argparse._AppendAction): + """append to list, like normal "append", but split first + (default split on ',') + + parser = argparse.ArgumentParser() + parser.add_argument('-d', action=SplitAppendAction) + + the following argument have the same list as result: + -d ab -d cd -d kl -d mn + -d ab,cd,kl,mn + -d ab,cd -d kl,mn + """ + def __init__(self, *args, **kw): + self._split_chr = ',' + argparse.Action.__init__(self, *args, **kw) + + def __call__(self, parser, namespace, values, option_string=None): + # _AppendAction does not return a value + for value in values.split(self._split_chr): + argparse._AppendAction.__call__( + self, parser, namespace, value, option_string) |
