diff options
Diffstat (limited to 'morphlib/morphloader.py')
-rw-r--r-- | morphlib/morphloader.py | 46 |
1 files changed, 15 insertions, 31 deletions
diff --git a/morphlib/morphloader.py b/morphlib/morphloader.py index 668b133e..66f4763a 100644 --- a/morphlib/morphloader.py +++ b/morphlib/morphloader.py @@ -388,49 +388,32 @@ class MorphologyLoader(object): self._predefined_build_systems['manual'] = \ morphlib.buildsystem.ManualBuildSystem() - def parse_morphology_text(self, text, morph_filename): - '''Parse a textual morphology. - - The text may be a string, or an open file handle. + def load_from_string(self, string, filename='string', + set_defaults=True): # pragma: no cover + '''Load a morphology from a string. - Return the new Morphology object, or raise an error indicating - the problem. This method does minimal validation: a syntactically - correct morphology is fine, even if none of the fields are - valid. It also does not set any default values for any of the - fields. See validate and set_defaults. + Return the Morphology object. ''' try: - obj = yaml.safe_load(text) + obj = yaml.safe_load(string) except yaml.error.YAMLError as e: - raise MorphologyNotYamlError(morph_filename, e) + raise MorphologyNotYamlError(filename, e) if not isinstance(obj, dict): - raise NotADictionaryError(morph_filename) + raise NotADictionaryError(filename) m = morphlib.morphology.Morphology(obj) - m.filename = morph_filename - return m - - def load_from_string(self, string, - filename='string'): # pragma: no cover - '''Load a morphology from a string. - - Return the Morphology object. - - ''' - - if string is None: - return None - - m = self.parse_morphology_text(string, filename) + m.filename = filename self.validate(m) - self.set_commands(m) - self.set_defaults(m) + + if set_defaults: + self.set_commands(m) + self.set_defaults(m) return m - def load_from_file(self, filename): + def load_from_file(self, filename, set_defaults=True): '''Load a morphology from a named file. Return the Morphology object. @@ -439,7 +422,8 @@ class MorphologyLoader(object): with open(filename) as f: text = f.read() - return self.load_from_string(text, filename=filename) + return self.load_from_string(text, filename=filename, + set_defaults=set_defaults) def save_to_string(self, morphology): '''Return normalised textual form of morphology.''' |