summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2013-11-26 12:37:33 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2013-11-29 16:11:32 +0000
commit5ecc3651d4cab13d244e394ab63e45d79294f62d (patch)
treeffedff8031363678b10e2c3de47a6cf702c4d864
parent03e724f1fb690e9ef95b082e4f1ad96799ec18c1 (diff)
downloadmorph-5ecc3651d4cab13d244e394ab63e45d79294f62d.tar.gz
morphloader: use getattr for validate, set defaults
It saves some boilerplate.
-rw-r--r--morphlib/morphloader.py21
1 files changed, 5 insertions, 16 deletions
diff --git a/morphlib/morphloader.py b/morphlib/morphloader.py
index fdc3b62f..e7c1d9ff 100644
--- a/morphlib/morphloader.py
+++ b/morphlib/morphloader.py
@@ -288,14 +288,10 @@ class MorphologyLoader(object):
self._deny_obsolete_fields(obsolete, morph)
self._deny_unknown_fields(required + allowed, morph)
- if kind == 'system':
- self._validate_system(morph)
- elif kind == 'stratum':
- self._validate_stratum(morph)
- elif kind == 'chunk':
- self._validate_chunk(morph)
- else:
- assert kind == 'cluster'
+ getattr(self, '_validate_%s' % kind)(morph)
+
+ def _validate_cluster(self, morph):
+ pass
def _validate_system(self, morph):
# A system must contain at least one stratum
@@ -394,14 +390,7 @@ class MorphologyLoader(object):
if key not in morphology:
morphology[key] = defaults[key]
- if kind == 'cluster':
- self._set_cluster_defaults(morphology)
- elif kind == 'system':
- self._set_system_defaults(morphology)
- elif kind == 'stratum':
- self._set_stratum_defaults(morphology)
- elif kind == 'chunk':
- self._set_chunk_defaults(morphology)
+ getattr(self, '_set_%s_defaults' % kind)(morphology)
def unset_defaults(self, morphology):
'''If a field is equal to its default, delete it.