summaryrefslogtreecommitdiff
path: root/action/splitappend.py
diff options
context:
space:
mode:
authorAnthon van der Neut <anthon@mnt.org>2015-08-27 17:44:39 +0200
committerAnthon van der Neut <anthon@mnt.org>2015-08-27 17:44:39 +0200
commit3403025e03dd626d270f8f075fb4862daeff9878 (patch)
tree7bdad65614b4948b1ad478a76c2ca3261e652425 /action/splitappend.py
parente8188ad86449c239b6366937fea0578c315c1d5d (diff)
downloadruamel.std.argparse-3403025e03dd626d270f8f075fb4862daeff9878.tar.gz
- added license
- move test to _test - move _action to action - updated setup.py (and pkg_data in __init__.py) - flask8 in tox.ini
Diffstat (limited to 'action/splitappend.py')
-rw-r--r--action/splitappend.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/action/splitappend.py b/action/splitappend.py
new file mode 100644
index 0000000..82b003b
--- /dev/null
+++ b/action/splitappend.py
@@ -0,0 +1,29 @@
+# coding: utf-8
+# Copyright Ruamel bvba 2007-2014
+
+from __future__ import print_function
+
+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)