Sort parser out a bit more

This commit is contained in:
XANTRONIX 2025-03-15 18:07:08 -04:00
parent c0221f30f0
commit b884d060b8

View file

@ -93,7 +93,7 @@ class SPCOutlookArea():
area_type = None
threat = None
category = None
points = None
points = list()
for line in text.split('\n'):
if line is None:
@ -101,14 +101,14 @@ class SPCOutlookArea():
line = line.rstrip()
if state is SPCOutlookParserState.HEADER:
if line == '':
continue
if state is SPCOutlookParserState.HEADER:
match = RE_HEADER.match(line)
if match is None:
raise SPCOutlookParserException(f"Unexpected header value, got {line}")
raise SPCOutlookParserException(f"Unexpected header value, got '{line}'")
area.day = int(match['day'])
@ -148,6 +148,9 @@ class SPCOutlookArea():
state = SPCOutlookParserState.VALIDITY
elif state is SPCOutlookParserState.VALIDITY:
if line == '':
continue
match = RE_VALIDITY.match(line)
if match is None:
@ -194,36 +197,62 @@ class SPCOutlookArea():
state = SPCOutlookParserState.AREA_THREAT
elif state is SPCOutlookParserState.AREA_THREAT:
if line == '&&':
if line == '':
continue
elif line == '&&':
print(f"Done getting points, area type {area_type} threat {threat}")
threat = None
category = None
points = None
points = list()
continue
#
# Check for an area type.
#
match = RE_AREA_TYPE.match(line)
if match is not None:
area_type = match['type']
continue
#
# Check for an area threat.
#
match = RE_THREAT.match(line)
if match is not None:
threat = match['type']
continue
if points is None:
#
# Check for first line of polygon.
#
match = RE_POINTS_START.match(line)
if match is not None:
print(f"Already have {len(points)} points")
category = match['category']
points = re.split(r'\s+', match['rest'])
elif points is not None:
points = re.split(r'\s+', match['rest'])[1:]
continue
#
# Check for polygon line continuation.
#
match = RE_POINTS.match(line)
if match is not None:
points.extend(re.split(r'\s+', line.rstrip()))
points.extend(re.split(r'\s+', line.rstrip())[1:])
continue
#
# If none of the previous expressions match, then treat all
# following text as body.
#
area.body = line
state = SPCOutlookParserState.BODY
elif state == SPCOutlookParserState.BODY:
area.body += '\n' + line
return area