summaryrefslogtreecommitdiffstats
path: root/parsers/survex.py
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@klebos.com>2022-03-03 00:26:04 +0000
committerPhilip Sargent <philip.sargent@klebos.com>2022-03-03 00:26:04 +0000
commit7f41017ce3569cd89c706f089e3f51179e5edc7b (patch)
treeea69b45adaa262493376c0ad81e6d3997a768ef3 /parsers/survex.py
parent02d58d440e2f0360be64a9700819e7007d282d85 (diff)
downloadtroggle-7f41017ce3569cd89c706f089e3f51179e5edc7b.tar.gz
troggle-7f41017ce3569cd89c706f089e3f51179e5edc7b.tar.bz2
troggle-7f41017ce3569cd89c706f089e3f51179e5edc7b.zip
git merge failure caught in svx files
Diffstat (limited to 'parsers/survex.py')
-rw-r--r--parsers/survex.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/parsers/survex.py b/parsers/survex.py
index 29cca3c..dd40638 100644
--- a/parsers/survex.py
+++ b/parsers/survex.py
@@ -133,7 +133,7 @@ class LoadingSurvex():
rx_star = re.compile(r'(?i)\s*\*[\s,]*(\w+)\s*(.*?)\s*(?:;.*)?$')
rx_starref = re.compile(r'(?i)^\s*\*ref[\s.:]*((?:19[6789]\d)|(?:20[0123]\d))\s*#?\s*(X)?\s*(.*?\d+.*?)$')
rx_argsref = re.compile(r'(?i)^[\s.:]*((?:19[6789]\d)|(?:20[0123]\d))\s*#?\s*(X)?\s*(.*?\d+.*?)$')
- rx_badmerge= re.compile(r'(?i).*(\>\>\>)|(\<\<\<).*$')
+ rx_badmerge= re.compile(r'(?i).*(\>\>\>\>\>)|(\=\=\=\=\=)|(\<\<\<\<\<).*$')
rx_ref2 = re.compile(r'(?i)\s*ref[.;]?')
rx_ref3 = re.compile(r'(?i)\s*wallet[.;]?')
@@ -1066,6 +1066,7 @@ class LoadingSurvex():
and reads only the *include and *begin and *end statements. It produces a linearised
list of the include tree and detects blocks included more than once.
"""
+ thissvxline = 0
indent = " " * self.depthinclude
sys.stderr.flush();
self.callcount +=1
@@ -1092,6 +1093,18 @@ class LoadingSurvex():
svxlines = fin.read().splitlines()
for svxline in svxlines:
self.lineno += 1
+ thissvxline += 1
+ # detect a merge failure inserted by version control
+ mfail = self.rx_badmerge.match(svxline)
+ if mfail:
+ message = f"\n!! - ERROR version control merge failure\n - '{svxline}'\n"
+ message = message + f" - in '{path}' at line {thissvxline}\n"
+ message = message + f" - line {self.lineno} {survexblock}\n - Parsing aborted. NERD++ needed to fix it"
+ print(message)
+ print(message,file=sys.stderr)
+ DataIssue.objects.create(parser='survex', message=message)
+ return # skip this survex file
+
includestmt =self.rx_include.match(svxline)
if not includestmt:
fcollate.write("{}\n".format(svxline.strip()))