From 517f1c5846f684765819c2bcb94cacbef283d423 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sat, 21 May 2022 20:05:32 -0300 Subject: [PATCH] Move the final strings-based detection for Quadtel --- biostools/analyzers.py | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/biostools/analyzers.py b/biostools/analyzers.py index 4497044..66ccc44 100644 --- a/biostools/analyzers.py +++ b/biostools/analyzers.py @@ -2442,12 +2442,9 @@ class QuadtelAnalyzer(Analyzer): def __init__(self, *args, **kwargs): super().__init__('Quadtel', *args, **kwargs) - self._id_block_pattern = re.compile(b'''Copyright 19..-.... Quadtel Corp\. Version''') + self._id_block_pattern = re.compile(b'''Copyright 19..-.... Quadtel Corp\\. Version''') self._version_pattern = re.compile('''(?:(?:Quadtel|QUADTEL|PhoenixBIOS) )?(.+) BIOS Version ([^\\r\\n]+)''') - - self.register_check_list([ - (self._string_date, RegexChecker), - ]) + self._date_pattern = re.compile(b'''([0-9]{2}/[0-9]{2}/[0-9]{2})[^0-9]''') def can_handle(self, file_data, header_data): if b' Quadtel Corp. Version ' not in file_data: @@ -2476,23 +2473,17 @@ class QuadtelAnalyzer(Analyzer): # Split sign-on lines. self.signon = '\n'.join(x.rstrip('\r').strip() for x in self.signon.split('\n') if x != '\r').strip('\n') - return True - - def _string_date(self, line, match): - '''^[0-9]{2}/[0-9]{2}/[0-9]{2}$''' - - # Add date to string, or replace any previously-found date with a newer one. - linebreak_index = self.string.find('\n') - if linebreak_index > -1: - if util.date_gt(line, self.string[linebreak_index + 1:], util.date_pattern_mmddyy): - self.string = self.string[:linebreak_index + 1] + match.group(0) - else: - if self.string: - self.string += '\n' - self.string += line - - # Disarm sign-on trap if armed. - self._trap_signon = False + # Add newest date found to the string. + for match in self._date_pattern.finditer(file_data): + date = match.group(1) + linebreak_index = self.string.find('\n') + if linebreak_index > -1: + if util.date_gt(date, self.string[linebreak_index + 1:], util.date_pattern_mmddyy): + self.string = self.string[:linebreak_index + 1] + match.group(0) + else: + if self.string: + self.string += '\n' + self.string += date return True