[designspace] if elements not defined, don't set key/value pair in returned dict

According to https://github.com/LettError/designSpaceDocument

> Not all values might be required by all applications.

So if any of 'elements', 'sources' or 'instances' is missing, the dictionary
returned by designspace.load will not contain those keys.
This commit is contained in:
Cosimo Lupo 2017-02-27 16:17:13 +00:00
parent b9ff863b2c
commit 51f4302ec8
No known key found for this signature in database
GPG Key ID: B61AAAD0B53A6419

View File

@ -64,22 +64,27 @@ def _load(et):
designspace = {}
ds = et.getroot()
axes = []
ds_axes = ds.find('axes')
if ds_axes:
for et in ds_axes:
axes_element = ds.find('axes')
if axes_element is not None:
axes = []
for et in axes_element:
axes.append(_loadAxis(et))
designspace['axes'] = axes
designspace['axes'] = axes
masters = []
for et in ds.find('sources'):
masters.append(_loadItem(et))
designspace['masters'] = masters
sources_element = ds.find('sources')
if sources_element is not None:
sources = []
for et in sources_element:
sources.append(_loadItem(et))
# XXX: why don't we call it 'sources'?
designspace['masters'] = sources
instances = []
for et in ds.find('instances'):
instances.append(_loadItem(et))
designspace['instances'] = instances
instances_element = ds.find('instances')
if instances_element is not None:
instances = []
for et in instances_element:
instances.append(_loadItem(et))
designspace['instances'] = instances
return designspace