summaryrefslogtreecommitdiff
path: root/_action/splitappend.py
diff options
context:
space:
mode:
authorAnthon van der Neut <anthon@mnt.org>2014-01-28 12:21:00 +0100
committerAnthon van der Neut <anthon@mnt.org>2014-01-28 12:21:00 +0100
commit30dbd5babf56398c16efd82f513935d98e36a81d (patch)
tree58df32860f56c2bd551c1592eac8a6754f0e953e /_action/splitappend.py
downloadruamel.std.argparse-30dbd5babf56398c16efd82f513935d98e36a81d.tar.gz
initial version
Diffstat (limited to '_action/splitappend.py')
-rw-r--r--_action/splitappend.py26
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)