2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2024-11-25 08:41:51 +00:00

found why regex is not finding ; comment, to fix

This commit is contained in:
Philip Sargent 2023-11-16 10:27:06 +02:00
parent e1c9de14ca
commit 5961175193

View File

@ -300,6 +300,9 @@ class LoadingSurvex:
rx_commteam = re.compile(r"(?i)\s*(Messteam|Zeichner)\s*[:]?(.*)")
rx_quotedtitle = re.compile(r'(?i)^"(.*)"$')
rx_fixline = re.compile(r"(?i)^\s*([\w\d_\.\-]+)\s+(?:reference)?\s*([\d\.]*)\s+([\d\.]*)\s+([\d\.]*)(.*)$")
# This interprets the survex "*data normal" command which sets out the order of the fields in the data, e.g.
# *DATA normal from to length gradient bearing ignore ignore ignore ignore
@ -611,15 +614,19 @@ class LoadingSurvex:
def LoadSurvexFix(self, survexblock, line):
"""*fix is a station geolocation, units depend on a previous *cs setting
NOTE 'line' is not the full line, it is 'arg' and the comments have been stripped !
"""
#fixline = line.strip().replace("\t"," ").split(" ") # unpack tuples idiom in python 3
fixline = re.match("(?i)\s*([\w\d_\.\-]+)\s+(?:reference)?\s*([\d\.]*)\s+([\d\.]*)\s+([\d\.]*)\s*(;.*)?$", line)
# fixline = re.match("(?i)\s*([\w\d_\.\-]+)\s+(?:reference)?\s*([\d\.]*)\s+([\d\.]*)\s+([\d\.]*)\s*(.*)$", line)
fixline = self.rx_fixline.match(line)
if not fixline:
message = f'BAD fix regex {line.replace(" ","|")} {survexblock.survexfile.path}:{survexblock}'
print(self.insp + message)
stash_data_issue(parser="survex", message=message)
else:
name, *fixdata = fixline.groups()
fixdata = fixline.groups()
#print(fixline.group(1), fixline.group(5))
print(f"'{line}'")
name = fixdata[0]
if name in self.fixes:
message = f"! Duplicate *FIX: id '{line}' ({survexblock}) {survexblock.survexfile.path}"
print(self.insp + message)
@ -630,11 +637,14 @@ class LoadingSurvex:
try:
#_, _, alt, *rest = (fixdata + [None]*4)[:4]
_, _, alt, comment = fixdata
fixid = str(survexblock)+name
name, _, _, alt, comment = fixdata
fixid = str(survexblock.id)+ ":"+ name
self.fixes[fixid] = (survexblock, alt, comment)
except:
print(f'BAD fix {name}, {fixdata=}\n{line.replace(" ","|")}\n{survexblock.survexfile.path}:{survexblock}', file=sys.stderr)
message = f"{name}, {fixdata=}, last:{fixline.groups()[-1]}"
print(self.insp + message)
except Exception as e:
print(f'BAD fix comment {e}', file=sys.stderr)
print(f'BAD fix comment {name}, {fixdata=}\n{line.replace(" ","|")}\n{survexblock.survexfile.path}:{survexblock}', file=sys.stderr)
def LoadSurvexEntrance(self, survexblock, line):
@ -2402,13 +2412,23 @@ def FindAndLoadSurvex():
for f in svx_load.fixes:
# why are we seeing no *fixes from fixedpts/gps18.svx etc. ? They are parsed !
survexblock, altitude, comment = svx_load.fixes[f]
s = survexblock
spath = ""
sprevious = None
while s.parent != sprevious:
spath += str(s.parent) + ":" + spath
sprevious = s
if not s.parent:
break
s = s.parent
if comment:
print(f"{a} {b} {comment}")
print(f"COMMENT {survexblock} {altitude} {comment}")
if re.match("(?i)[^s]*srtm[\s\S]*", comment.lower()):
print(f"{f} - {comment}")
print(f"{f} - {spath}::{survexblock} - {comment}")
else:
if str(f).startswith("162"):
print(f"{f} - {survexblock.survexfile}:{survexblock} - {altitude=}")
if str(f).startswith("1623"):
print(f"{f} - {spath}::{survexblock} - {altitude=}")
svx_load = None