From 5fa101c0a1a817a58fc88306b028fb61d5f1589b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Fri, 27 Feb 2015 15:48:13 +0000 Subject: morphlib/sourceresolver.py: Add _get_file_contents() And make _get_morphology() use it --- morphlib/sourceresolver.py | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/morphlib/sourceresolver.py b/morphlib/sourceresolver.py index dd020803..cd183ee0 100644 --- a/morphlib/sourceresolver.py +++ b/morphlib/sourceresolver.py @@ -261,18 +261,13 @@ class SourceResolver(object): return morph - def _get_morphology(self, reponame, sha1, filename): - '''Read the morphology at the specified location. + def _get_file_contents(self, reponame, sha1, filename): # pragma: no cover + '''Read the file at the specified location. Returns None if the file does not exist in the specified commit. ''' - key = (reponame, sha1, filename) - if key in self._resolved_morphologies: - return self._resolved_morphologies[key] - - loader = morphlib.morphloader.MorphologyLoader() - morph = None + text = None if reponame == self._definitions_repo and \ sha1 == self._definitions_absref: # pragma: no cover @@ -280,11 +275,27 @@ class SourceResolver(object): # we can quickly read definitions files from. defs_filename = os.path.join(self._definitions_checkout_dir, filename) - morph = self._get_morphology_from_definitions(loader, - defs_filename) + text = self._get_file_contents_from_definitions(defs_filename) else: - morph = self._get_morphology_from_repo(loader, reponame, sha1, - filename) + text = self._get_file_contents_from_repo(reponame, sha1, filename) + + return text + + def _get_morphology(self, reponame, sha1, filename): # pragma: no cover + '''Read the morphology at the specified location. + + Returns None if the file does not exist in the specified commit. + + ''' + key = (reponame, sha1, filename) + if key in self._resolved_morphologies: + return self._resolved_morphologies[key] + + loader = morphlib.morphloader.MorphologyLoader() + morph = None + + text = self._get_file_contents(reponame, sha1, filename) + morph = loader.load_from_string(text) if morph is None: return None -- cgit v1.2.1