0
|
1 """Common functions"""
|
|
2
|
|
3
|
|
4 def process_args(args, ret_type='str', ret_mode=None):
|
|
5 """Split arguments (only strings) on comma, return in requested
|
|
6
|
|
7 ret_type
|
|
8 (str, int or bool)
|
|
9
|
|
10 as
|
|
11
|
|
12 ret_mode
|
|
13 char vector - c(1,2,3)
|
|
14 list vector - list(1,2,3)
|
|
15 list - as list [1,2,3]
|
|
16 None - same as input
|
|
17
|
|
18 """
|
|
19 all_args = [item.strip() for item in args.split(',')]
|
|
20 num_options = len(all_args)
|
|
21 if num_options == 1 and len(all_args[0]):
|
|
22 if ret_type == 'int':
|
|
23 option = int(all_args[0])
|
|
24 if ret_mode == 'charvector':
|
|
25 # if option:
|
|
26 return 'c({})'.format(option)
|
|
27 # else:
|
|
28 # return 'c()'
|
|
29 elif ret_mode == 'listvector':
|
|
30 # if option:
|
|
31 return 'list({})'.format(option)
|
|
32 # else:
|
|
33 # return 'list()'
|
|
34 elif ret_mode == 'list':
|
|
35 # if option:
|
|
36 return [option]
|
|
37 # else:
|
|
38 # return []
|
|
39 else:
|
|
40 return option
|
|
41 else:
|
|
42 # str, bool
|
|
43 option = all_args[0]
|
|
44 if ret_mode == 'charvector':
|
|
45 # if len(option):
|
|
46 return 'c("{}")'.format(option)
|
|
47 # else:
|
|
48 # return 'c("")'
|
|
49 elif ret_mode == 'listvector':
|
|
50 # if option:
|
|
51 return 'list("{}")'.format(option)
|
|
52 # else:
|
|
53 # return 'list("")'
|
|
54 elif ret_mode == 'list':
|
|
55 # if option:
|
|
56 return [option]
|
|
57 # else:
|
|
58 # return []
|
|
59 else:
|
|
60 return option
|
|
61 elif num_options > 1:
|
|
62 if ret_type == 'int':
|
|
63 options = tuple([int(item) for item in all_args])
|
|
64 if ret_mode == 'charvector':
|
|
65 # if len(options):
|
|
66 return 'c{}'.format(options)
|
|
67 # else:
|
|
68 # return 'c()'
|
|
69 elif ret_mode == 'listvector':
|
|
70 # if len(options):
|
|
71 return 'list{}'.format(options)
|
|
72 # else:
|
|
73 # return 'list()'
|
|
74 elif ret_mode == 'list':
|
|
75 return list(options)
|
|
76 else:
|
|
77 options = tuple(all_args)
|
|
78 if ret_mode == 'charvector':
|
|
79 # if len(options):
|
|
80 return 'c{}'.format(options)
|
|
81 elif ret_mode == 'listvector':
|
|
82 return 'list{}'.format(options)
|
|
83 elif ret_mode == 'list':
|
|
84 # if len(all_args):
|
|
85 return all_args
|
|
86 # else:
|
|
87 # return []
|
|
88 else:
|
|
89 # as original with spaces stripped
|
|
90 return ','.join(all_args)
|
|
91
|
|
92
|