more work on parsing

This commit is contained in:
Radovan Bast
2016-05-19 18:46:12 +02:00
parent 24ff4c430e
commit 90b89354db
4 changed files with 125 additions and 87 deletions

View File

@ -12,3 +12,35 @@ def extract_list(config, section):
else:
l.append(x[section])
return l
def to_d(l):
"""
Converts list of dicts to dict.
"""
_d = {}
for x in l:
for k, v in x.items():
_d[k] = v
return _d
def test_to_d():
l = [{'a': 'b'}, {'c': 'd'}]
d = {'a': 'b', 'c': 'd'}
assert to_d(l) == d
def to_l(x):
"""
Converts list of dicts to dict.
"""
if isinstance(x, str):
return [x]
else:
return x
def test_to_l():
assert to_l('foo') == ['foo']
assert to_l(['foo', 'bar']) == ['foo', 'bar']

View File

@ -1,4 +1,4 @@
def parse_cmake_module(s_in, override={}):
def parse_cmake_module(s_in, overrides={}):
import sys
from collections import Mapping, Iterable, defaultdict
from autocmake.parse_yaml import parse_yaml
@ -33,7 +33,7 @@ def parse_cmake_module(s_in, override={}):
autocmake_entry = autocmake_entry.replace('\n ', '\n')
buf = StringIO(autocmake_entry)
config = parse_yaml(buf, override)
config = parse_yaml(buf, overrides)
for k, v in config.items():
if isinstance(v, Iterable) and not isinstance(v, str):
@ -109,7 +109,7 @@ enable_language(CXX)'''
assert parsed_config['c'] == ['v3']
def test_parse_cmake_module_override():
def test_parse_cmake_module_overrides():
s = r'''#.rst:
#

View File

@ -1,4 +1,4 @@
def parse_yaml(stream, override={}):
def parse_yaml(stream, overrides={}):
import yaml
import sys
from autocmake.interpolate import interpolate
@ -10,8 +10,8 @@ def parse_yaml(stream, override={}):
sys.exit(-1)
for k in config:
if k in override:
config[k] = override[k]
if k in overrides:
config[k] = overrides[k]
config = interpolate(config, config)
return config