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.
33 Parse a list or strings using the logic of the CMake function
34 CMAKE_PARSE_ARGUMENTS.
36 >>> res = CMakeParseArguments(['USE', 'Gaudi', 'v25r0', 'DATA', 'Det/SQLDDDB'],
37 ... multi_value=['USE', 'DATA'])
44 >>> res = CMakeParseArguments('a b OPTION1 c FLAG1 d OPTION2 e f'.split(),
45 ... options=['FLAG1', 'FLAG2'],
46 ... single_value=['OPTION1', 'OPTION2'])
59 options = set(options
or [])
60 single_value = set(single_value
or [])
61 multi_value = set(multi_value
or [])
62 all_keywords = options.union(single_value).union(multi_value)
63 result = {
'UNPARSED': []}
64 result.update((k,
False)
for k
in options)
65 result.update((k,
None)
for k
in single_value)
66 result.update((k, [])
for k
in multi_value)
72 elif arg
in single_value:
73 result[arg] = args.pop(0)
74 elif arg
in multi_value:
75 while args
and args[0]
not in all_keywords:
76 result[arg].append(args.pop(0))
78 result[
'UNPARSED'].append(arg)