mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2026-02-08 11:28:23 +00:00
*team new code to fit updated survex
This commit is contained in:
@@ -269,10 +269,19 @@ class LoadingSurvex:
|
||||
#rx_names = re.compile(r"(?i)names")
|
||||
rx_flagsnot = re.compile(r"not\s")
|
||||
rx_linelen = re.compile(r"[\d\-+.]+$")
|
||||
instruments = "(bitch|bodger|bolt|bolter|bolting|book|clino|comp|compass|consultant|disto|distox|distox2|dog|dogsbody|drawing|drill|gps|helper|inst|instr|instrument|monkey|nagging|nail|nail_polish|nail_polish_bitch|nail_polish_monkey|nail_varnish|nail_varnish_bitch|note|paint|photo|pic|point|polish|powerdrill|rig|rigger|rigging|shoot|sketch|slacker|something|surface|tape|topodroid|unknown|useless|varnish|waiting_patiently)"
|
||||
rx_teammem = re.compile(r"(?i)" + instruments + r"?(?:es|s)?\s+(.*)$")
|
||||
rx_teamold = re.compile(r"(?i)(.*)\s+" + instruments + r"?(?:es|s)?$")
|
||||
rx_teamabs = re.compile(r"(?i)^\s*(" + instruments + r")?(?:es|s)?\s*$")
|
||||
|
||||
# this extensive list of expo roles are now (after 24/2/2025) just comments and not legal survex code.
|
||||
roles = "(assistant|bitch|bodger|bolt|bolter|bolting|book|clino|comp|compass|consultant|disto|distox|distox2|"
|
||||
roles += "dog|dogsbody|drawing|drill|gps|helper|inst|instr|instrument|length|monkey|nagging|nail|"
|
||||
roles += "nail_polish|nail_polish_bitch|nail_polish_monkey|nail_varnish|nail_varnish_bitch|note|notebook|"
|
||||
roles += "paint|photo|pic|pictures|point|polish|powerdrill|rig|rigger|rigging|shoot|sketch|slacker|"
|
||||
roles += "something|station|surface|tape|topodroid|unknown|useless|varnish|waiting_patiently)"
|
||||
|
||||
#rx_teammem = re.compile(r"(?i)" + roles + r"?(?:es|s)?\s+(.*)$") no longer legal survex ordering
|
||||
teamfix = r"(?i)(.*?)\s+" + roles + r"?(?:es|s)?$"
|
||||
rx_teamfix = re.compile(teamfix)
|
||||
rx_teamabs = re.compile(r"(?i)^\s*(" + roles + r")?(?:es|s)?\s*$")
|
||||
rx_teamone = re.compile(r"(?i)^\s*(.*)\s*$")
|
||||
rx_person = re.compile(r"(?i) and |/| / |, | , |&| & | \+ |^both$|^none$")
|
||||
rx_qm = re.compile(
|
||||
# r"(?i)^\s*QM(\d+)\s+(.+)\s+([\w\-\_]+)\.([\w\.\-]+)\s+(([\w\-]+)\.([\w\.\-]+)|\-)\s+(.+)$"
|
||||
@@ -579,6 +588,12 @@ class LoadingSurvex:
|
||||
# we will have to attach them to the survexblock anyway, and then do a
|
||||
# later check on whether they are valid when we get the date.
|
||||
|
||||
# big changes 24/2/2025 when Olly changed survex behaviour, and unilaterally eddited hundreds of
|
||||
# survex files to match. So troggle has to change to match the revised, stricter syntax.
|
||||
|
||||
if not tm: # i.e. null person inthe *team
|
||||
return # ignore: troggle does not need to know. Survex want to though.
|
||||
|
||||
self.currentteam.add(tm) # used in push/pop block code
|
||||
expo = survexblock.expedition # may be None if no *date yet
|
||||
|
||||
@@ -588,12 +603,12 @@ class LoadingSurvex:
|
||||
put_person_on_trip(survexblock, personexpedition, tm)
|
||||
|
||||
elif known_foreigner(tm): # note, not using .lower()
|
||||
message = f"- *team {expo.year} '{tm}' known foreigner on *team {survexblock.survexfile.path} ({survexblock}) in '{line}'"
|
||||
message = f"- *team {expo.year} '{tm}' known foreigner on *team {survexblock.survexfile.path} ({survexblock}) in '{line=}'"
|
||||
print(self.insp + message)
|
||||
# stash_data_issue(parser='survex', message=message, url=None, sb=(survexblock.survexfile.path))
|
||||
else:
|
||||
# we know the date and expo, but can't find the person
|
||||
message = f"! *team {expo.year} '{tm}' FAIL personexpedition lookup on *team {survexblock.survexfile.path} ({survexblock}) in '{line}'"
|
||||
message = f"! *team {expo.year} '{tm}' FAIL personexpedition lookup on *team {survexblock.survexfile.path} ({survexblock}) in '{line=}' {tm=}"
|
||||
print(self.insp + message)
|
||||
stash_data_issue(
|
||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
@@ -611,41 +626,61 @@ class LoadingSurvex:
|
||||
# parser="survex team", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
# )
|
||||
|
||||
mteammember = self.rx_teammem.match(line) # matches the role at the beginning
|
||||
if not mteammember:
|
||||
moldstyle = self.rx_teamold.match(line) # matches the role at the the end of the string
|
||||
if moldstyle:
|
||||
for tm in self.rx_person.split(moldstyle.group(1)):
|
||||
if tm:
|
||||
record_team_member(tm, survexblock)
|
||||
# seems to be working
|
||||
# msg = "! OLD tm='{}' line: '{}' ({}) {}".format(tm, line, survexblock, survexblock.survexfile.path)
|
||||
# print(msg, file=sys.stderr)
|
||||
else:
|
||||
message = f"! *team {survexblock.survexfile.path} ({survexblock}) Weird '{mteammember.group(1)}' oldstyle line: '{line}'"
|
||||
print(self.insp + message)
|
||||
stash_data_issue(
|
||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
)
|
||||
else:
|
||||
nullmember = self.rx_teamabs.match(line) # matches empty role line. Ignore these.
|
||||
if not nullmember:
|
||||
message = f"! *team {survexblock.survexfile.path} ({survexblock}) Bad line: '{line}'"
|
||||
print(self.insp + message)
|
||||
stash_data_issue(
|
||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
)
|
||||
else:
|
||||
for tm in self.rx_person.split(mteammember.group(2)):
|
||||
if tm:
|
||||
record_team_member(tm, survexblock)
|
||||
# teamfix = r"(?i)(.*?)\s+" + roles + r"?(?:es|s)?$" -- (.*?) means a non-greedy capture
|
||||
if fixstyle := self.rx_teamfix.match(line): # matches the optional role at the the end of the string WALRUS
|
||||
tmlist = fixstyle.group(1).strip('\"') # remove quotes, if present
|
||||
for tm in self.rx_person.split(tmlist):
|
||||
if tm.lower() =="":
|
||||
# message = f"! *team {survexblock.survexfile.path} ({survexblock}) NONE PERSON '{line=}'"
|
||||
# print(self.insp + message)
|
||||
# stash_data_issue(
|
||||
# parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
# )
|
||||
pass # does not add any information troggle is interested in
|
||||
else:
|
||||
if mteammember.group(2).lower() not in ("none", "both"):
|
||||
message = f"! Weird *team '{mteammember.group(2)}' newstyle line: '{line}' ({survexblock}) {survexblock.survexfile.path}"
|
||||
print(self.insp + message)
|
||||
stash_data_issue(
|
||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
)
|
||||
record_team_member(tm.strip('\"'), survexblock)
|
||||
# else:
|
||||
# message = f"! *team {survexblock.survexfile.path} ({survexblock}) Weird '{fixstyle.group(1)}' strictstyle {line=} {tm=}"
|
||||
# print(self.insp + message)
|
||||
# stash_data_issue(
|
||||
# parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
# )
|
||||
elif nullperson := self.rx_teamabs.match(line): # matches role but no person. Ignore these. WALRUS
|
||||
return
|
||||
elif line.startswith("unknown "):
|
||||
message = f"! *team {survexblock.survexfile.path} ({survexblock}) role 'unknown' in wrong place '{line=}'"
|
||||
print(self.insp + message)
|
||||
stash_data_issue(
|
||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
)
|
||||
record_team_member(line.replace("unknown ","").strip('\"'), survexblock)
|
||||
elif no_role_person := self.rx_teamone.match(line):
|
||||
nrp = no_role_person.group(1).strip('\"')
|
||||
# message = f"! *team {survexblock.survexfile.path} ({survexblock}) person {nrp=} has no role '{line=}'"
|
||||
# print(self.insp + message)
|
||||
# stash_data_issue(
|
||||
# parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
# )
|
||||
record_team_member(nrp, survexblock)
|
||||
else:
|
||||
message = f"! *team {survexblock.survexfile.path} ({survexblock}) Bad '{line=}'"
|
||||
print(self.insp + message)
|
||||
stash_data_issue(
|
||||
parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
)
|
||||
# mteammember = self.rx_teammem.match(line) # matches the role at the beginning [deprecated after 24/2/2025]
|
||||
# if not mteammember:
|
||||
# else:
|
||||
# for tm in self.rx_person.split(mteammember.group(2)):
|
||||
# if tm:
|
||||
# record_team_member(tm, survexblock)
|
||||
# else:
|
||||
# if mteammember.group(2).lower() not in ("none", "both"):
|
||||
# message = f"! Weird *team '{mteammember.group(2)}' expostyle line: '{line}' ({survexblock}) {survexblock.survexfile.path}"
|
||||
# print(self.insp + message)
|
||||
# stash_data_issue(
|
||||
# parser="survex", message=message, url=None, sb=(survexblock.survexfile.path)
|
||||
# )
|
||||
|
||||
def LoadSurvexSet(self, survexblock, line):
|
||||
"""survex *set can reset the character for space, decinmal point, field separator
|
||||
|
||||
Reference in New Issue
Block a user