From 62c6d3d8b8f676d3a1aca65ac167e2ecea333c44 Mon Sep 17 00:00:00 2001
From: Lauri Himanen <lauri.himanen@aalto.fi>
Date: Wed, 18 Oct 2017 18:21:44 +0300
Subject: [PATCH] Modified classes to take in the filepath in the
 parse()-function instead of the constructor.

---
 common/python/nomadcore/baseclasses.py | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/common/python/nomadcore/baseclasses.py b/common/python/nomadcore/baseclasses.py
index a1148a4..dd4b58d 100644
--- a/common/python/nomadcore/baseclasses.py
+++ b/common/python/nomadcore/baseclasses.py
@@ -182,7 +182,7 @@ class ParserInterface(with_metaclass(ABCMeta, object)):
         if not self.main_parser:
             logger.error("The main parser has not been set up.")
 
-        self.main_parser.parse()
+        self.main_parser.parse(main_file)
 
         # If using a local backend, the results will have been saved to a
         # separate results dictionary which should be returned.
@@ -310,8 +310,7 @@ class AbstractBaseParser(with_metaclass(ABCMeta, object)):
             caching backend.
     """
 
-    def __init__(self, file_path, parser_context):
-        self.file_path = file_path
+    def __init__(self, parser_context):
         self.parser_context = parser_context
         self.backend = parser_context.caching_backend
         self.super_backend = parser_context.super_backend
@@ -366,7 +365,7 @@ class AbstractBaseParser(with_metaclass(ABCMeta, object)):
         self.super_backend.fileOut.write("]\n")
 
     @abstractmethod
-    def parse(self):
+    def parse(self, filepath):
         """Used to do the actual parsing. Inside this function you should push
         the parsing results into the Caching backend, or directly to the
         superBackend. You will also have to open new sections, but remember
@@ -398,20 +397,20 @@ class MainHierarchicalParser(AbstractBaseParser):
             onClose triggers, SimpleMatchers, caching levels, etc.
 
     """
-    def __init__(self, file_path, parser_context):
+    def __init__(self, parser_context):
         """
         Args:
             file_path: Path to the main file as a string.
             parser_context: The ParserContext object that contains various
                 in-depth information about the parsing environment.
         """
-        super(MainHierarchicalParser, self).__init__(file_path, parser_context)
+        super(MainHierarchicalParser, self).__init__(parser_context)
         self.root_matcher = None
         self.regexs = RegexService()
         self.cm = None
         self.super_context = self
 
-    def parse(self):
+    def parse(self, filepath):
         """Starts the parsing. By default uses the SimpleParser scheme, if you
         want to use something else or customize the process just override this
         method in the subclass.
@@ -429,7 +428,7 @@ class MainHierarchicalParser(AbstractBaseParser):
                 metainfo_units=self.parser_context.metainfo_units,
                 superBackend=self.parser_context.super_backend,
                 metaInfoToKeep=self.parser_context.metainfo_to_keep,
-                mainFile=self.parser_context.main_file)
+                mainFile=filepath)
 
     def startedParsing(self, fInName, parser):
         """Function is called when the parsing starts.
-- 
GitLab