diff --git a/common/python/nomadcore/simple_parser.py b/common/python/nomadcore/simple_parser.py index dc5ca1a4ac30791871d088b7acd0a7ddeadd3f97..45a3f3ab1c2e30730c74264dee6d61351eff3cbb 100644 --- a/common/python/nomadcore/simple_parser.py +++ b/common/python/nomadcore/simple_parser.py @@ -581,30 +581,38 @@ class CompiledMatcher(object): if not m: raise Exception("Expected to match %s on %r" % (self.startRe.pattern, line)) self.annotate(m,line,parser,self.matcher,0) + result_dict = {} for k,v in m.groupdict().items(): if v is None: # a group may be optional (subexpression of ? or | in regex) continue - self.addStrValue(parser.backend, k, v) + k_converted, v_converted = self.addStrValue(parser.backend, k, v) + result_dict[k_converted] = v_converted if self.matcher.fixedStartValues: for k,v in self.matcher.fixedStartValues.items(): - self.addStrValue(parser.backend, k, v) + k_converted, v_converted = self.addStrValue(parser.backend, k, v) + result_dict[k_converted] = v_converted if self.matcher.forwardMatch: logger.debug("handleStartMatch of %s on (%s) pushing back line", self.matcher.desc(),line) parser.fIn.pushbackLine(line) + return result_dict def handleEndMatch(self, parser): line = parser.fIn.readline() m = self.endRe.match(line) #, re.MULTILINE) self.annotate(m,line,parser,self.matcher,1) + result_dict = {} for k,v in m.groupdict().items(): if v is None: # a group may be optional (subexpression of ? or | in regex) continue - self.addStrValue(parser.backend, k, v) + k_converted, v_converted = self.addStrValue(parser.backend, k, v) + result_dict[k_converted] = v_converted if self.matcher.fixedEndValues: for k,v in self.matcher.fixedEndValues.items(): - self.addStrValue(parser.backend, k, v) + k_converted, v_converted = self.addStrValue(parser.backend, k, v) + result_dict[k_converted] = v_converted + return result_dict def annotate(self,match,line,parser,matcher,targetStartEnd): if not parser.annotateFile: