Parse a list or strings using the logic of the CMake function
CMAKE_PARSE_ARGUMENTS.
>>> res = CMakeParseArguments(['USE', 'Gaudi', 'v25r0', 'DATA', 'Det/SQLDDDB'],
... multi_value=['USE', 'DATA'])
>>> res['USE']
['Gaudi', 'v25r0']
>>> res['DATA']
['Det/SQLDDDB']
>>> res['UNPARSED']
[]
>>> res = CMakeParseArguments('a b OPTION1 c FLAG1 d OPTION2 e f'.split(),
... options=['FLAG1', 'FLAG2'],
... single_value=['OPTION1', 'OPTION2'])
>>> res['FLAG1']
True
>>> res['FLAG2']
False
>>> res['OPTION1']
'c'
>>> res['OPTION2']
'e'
>>> res['UNPARSED']
['a', 'b', 'd', 'f']
Definition at line 31 of file project_manifest.py.
34 Parse a list or strings using the logic of the CMake function
35 CMAKE_PARSE_ARGUMENTS.
37 >>> res = CMakeParseArguments(['USE', 'Gaudi', 'v25r0', 'DATA', 'Det/SQLDDDB'],
38 ... multi_value=['USE', 'DATA'])
45 >>> res = CMakeParseArguments('a b OPTION1 c FLAG1 d OPTION2 e f'.split(),
46 ... options=['FLAG1', 'FLAG2'],
47 ... single_value=['OPTION1', 'OPTION2'])
60 options = set(options
or [])
61 single_value = set(single_value
or [])
62 multi_value = set(multi_value
or [])
63 all_keywords = options.union(single_value).union(multi_value)
64 result = {
'UNPARSED': []}
65 result.update((k,
False)
for k
in options)
66 result.update((k,
None)
for k
in single_value)
67 result.update((k, [])
for k
in multi_value)
73 elif arg
in single_value:
74 result[arg] = args.pop(0)
75 elif arg
in multi_value:
76 while args
and args[0]
not in all_keywords:
77 result[arg].append(args.pop(0))
79 result[
'UNPARSED'].append(arg)