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