"""Helper script with all Regexes.""" from __future__ import annotations import re from .enums import MessageTypes # pylint: disable=invalid-name # sample OH: SR0001L0001 006969XX [ID00000000] oh_regex = r""" ^S (?:R)(?P(?<=R)(?:\d{4})) (?:L)(?P(?<=L)(?:\d{4})) \s+(?P\w{8})\s+ \[(?P\w+)\]$ """ OH_MATCHER = re.compile(oh_regex, re.X) main_regex = r""" (?P[A-Fa-f0-9]{4}) (?P[A-Fa-f0-9]{4})\" (?P[*])? (?PSIA-DCS|ADM-CID|NULL)\" (?P[0-9]{4}) (?PR[A-Fa-f0-9]{1,6})? (?PL[A-Fa-f0-9]{1,6}) [#]?(?P[A-Fa-f0-9]{3,16})? [\[] (?P.*) """ MAIN_MATCHER = re.compile(main_regex, re.X) sia_content_regex = r""" [#]?(?P[A-Fa-f0-9]{3,16})? [|]? [N]? (?:ti)?(?:(?<=ti)(?P\d{2}:\d{2}))?\/? (?:id)?(?:(?<=id)(?P\d*))?\/? (?:ri)?(?:(?<=ri)(?P\d*))?\/? (?P[a-zA-Z]{2})? (?P.[^\[\]]*)? [\]] (?:\[(?:(?<=\[)(?P.*)(?=\]))\])? [_]? (?P[0-9:,-]*)?$ """ SIA_CONTENT_MATCHER = re.compile(sia_content_regex, re.X) encr_sia_content_regex = r"""(?:[^\|\[\]]*)[|]?""" ENCR_SIA_CONTENT_MATCHER = re.compile(encr_sia_content_regex + sia_content_regex, re.X) adm_content_regex = r""" [#]?(?P[A-F0-9]{3,16})? [|]? (?P\d{1}) (?P\d{3}) \s (?P\d{2}) \s (?P\d{3}) [\]] (?:\[(?:(?<=\[)(?P.[^\[\]]*)(?=\]))\])? [_]? (?P[0-9:,-]*)?$ """ ADM_CONTENT_MATCHER = re.compile(adm_content_regex, re.X) encr_adm_content_regex = r"""(?:[^\|\[\]]*)[|]?""" ENCR_ADM_CONTENT_MATCHER = re.compile(encr_adm_content_regex + adm_content_regex, re.X) def _get_matcher( message_type: MessageTypes | str, encrypted: bool = False ) -> re.Pattern: """Extract the content using the different regexes.""" if message_type == MessageTypes.ADMCID: return ENCR_ADM_CONTENT_MATCHER if encrypted else ADM_CONTENT_MATCHER return ENCR_SIA_CONTENT_MATCHER if encrypted else SIA_CONTENT_MATCHER