designspaceLib: add add{Axis,Source,Instance,Rule}Descriptor methods

as suggested by Just here:
https://github.com/fonttools/fonttools/pull/1860#issuecomment-601762751
This commit is contained in:
Cosimo Lupo 2020-03-20 15:58:21 +00:00
parent 2d27490c7d
commit ca3306da57
No known key found for this signature in database
GPG Key ID: 179A8F0895A02F4F

View File

@ -1188,15 +1188,35 @@ class DesignSpaceDocument(LogMixin, AsDictMixin):
def addSource(self, sourceDescriptor): def addSource(self, sourceDescriptor):
self.sources.append(sourceDescriptor) self.sources.append(sourceDescriptor)
def addSourceDescriptor(self, **kwargs):
source = self.writerClass.sourceDescriptorClass(**kwargs)
self.addSource(source)
return source
def addInstance(self, instanceDescriptor): def addInstance(self, instanceDescriptor):
self.instances.append(instanceDescriptor) self.instances.append(instanceDescriptor)
def addInstanceDescriptor(self, **kwargs):
instance = self.writerClass.instanceDescriptorClass(**kwargs)
self.addInstance(instance)
return instance
def addAxis(self, axisDescriptor): def addAxis(self, axisDescriptor):
self.axes.append(axisDescriptor) self.axes.append(axisDescriptor)
def addAxisDescriptor(self, **kwargs):
axis = self.writerClass.axisDescriptorClass(**kwargs)
self.addAxis(axis)
return axis
def addRule(self, ruleDescriptor): def addRule(self, ruleDescriptor):
self.rules.append(ruleDescriptor) self.rules.append(ruleDescriptor)
def addRuleDescriptor(self, **kwargs):
rule = self.writerClass.ruleDescriptorClass(**kwargs)
self.addRule(rule)
return rule
def newDefaultLocation(self): def newDefaultLocation(self):
"""Return default location in design space.""" """Return default location in design space."""
# Without OrderedDict, output XML would be non-deterministic. # Without OrderedDict, output XML would be non-deterministic.