# HG changeset patch # User Teemu Piippo # Date 1598383876 -10800 # Node ID 745f2c3aec0a4c9287655a6d0557d0a57e561b4b # Parent 62759e5c455427cf956b90cac865257cb40c60e7 added ability to get other header elements than just the first one diff -r 62759e5c4554 -r 745f2c3aec0a header.py --- a/header.py Tue Aug 25 22:20:15 2020 +0300 +++ b/header.py Tue Aug 25 22:31:16 2020 +0300 @@ -21,7 +21,8 @@ self.keywords = '' self.cmdline = None self.history = [] - self.first_occurrence = dict() + from collections import defaultdict + self.occurrences = defaultdict(list) @property def valid(self): return True @@ -272,8 +273,7 @@ match = re.search(pattern, self.current()) if match: self.order.append(description) - if description not in self.result.first_occurrence: - self.result.first_occurrence[description] = self.cursor + list.append(self.result.occurrences[description], self.cursor) return match.groups() else: self.parse_error(str.format("couldn't parse {}", description)) diff -r 62759e5c4554 -r 745f2c3aec0a parse.py --- a/parse.py Tue Aug 25 22:20:15 2020 +0300 +++ b/parse.py Tue Aug 25 22:31:16 2020 +0300 @@ -39,7 +39,9 @@ def has_header(self): return self.header and not isinstance(self.header, header.BadHeader) def find_first_header_object(self, object_type): - return self.body[self.header.first_occurrence[object_type]] + return self.find_header_object(object_type, 0) + def find_header_object(self, object_type, n): + return self.body[self.header.occurrences[object_type][n]] def model_vertices( model,