From c2876c0b64d17ca2c3a9e8a4a61a569d43e70cd6 Mon Sep 17 00:00:00 2001 From: julian <devnull@localhost> Date: Mon, 3 Nov 2008 00:17:28 +0100 Subject: [PATCH] [svn r8054] Removed last of the sqlite save hack Started to add reading of dates Changed character encoding code so it works --- troggle/parsers/survex.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/troggle/parsers/survex.py b/troggle/parsers/survex.py index 99044cbe8..a3ea4dcb5 100644 --- a/troggle/parsers/survex.py +++ b/troggle/parsers/survex.py @@ -7,26 +7,18 @@ re_include_extension = re.compile(r"^\s*\*include\s+([^\s]*).svx$", re.IGNORECAS re_include_no_extension = re.compile(r"^\s*\*include\s+([^\s]*)$", re.IGNORECASE) re_begin = re.compile(r"^\s*\*begin\s+(.*?)\s*$", re.IGNORECASE) re_end = re.compile(r"^\s*\*end\s+(.*?)\s*$", re.IGNORECASE) - -def save(x): #There seems to be an intermitent problem with sqlite and Vista, this should fix it - #try: - x.save() - #except Exception: #sqlite3.OperationalError: - # print "Error" - # time.sleep(1) - # save(x) +re_date = re.compile(r"^\s*\*date\s+(.*?)\s*$", re.IGNORECASE) def fileIterator(directory, filename): survex_file = os.path.join(directory, filename + ".svx") f = open(os.path.join(settings.SURVEX_DATA, survex_file), "rb") char = 0 for line in f.readlines(): - line = unicode(line, "latin1").decode("utf-8") + line = unicode(line, "latin1") include_extension = re_include_extension.match(line) include_no_extension = re_include_no_extension.match(line) def a(include): link = re.split(r"/|\\", include) - print os.path.join(directory, *link[:-1]), link[-1] return fileIterator(os.path.join(directory, *link[:-1]), link[-1]) if include_extension: for sf, c, l in a(include_extension.groups()[0]): @@ -43,26 +35,29 @@ def make_model(name, parent, iter_lines, sf, c, l): m = models.SurvexBlock(name = name, parent = parent, begin_file = sf, begin_char = c, text = l) else: m = models.SurvexBlock(name = name, begin_file = sf, begin_char = c, text = l) - save(m) + m.save() for survex_file, count, line in iter_lines: begin = re_begin.match(line.split(";")[0]) end = re_end.match(line.split(";")[0]) + date = re_date.match(line.split(";")[0]) if begin: make_model(begin.groups()[0], m, iter_lines, survex_file, count, line) elif end: m.text = m.text + line m.end_file = survex_file m.end_char = count - print len(m.text) - save(m) + m.save() assert (end.groups()[0]).lower() == (name).lower() return None + elif date: + print date.groups()[0] + m.text = m.text + line else: m.text = m.text + line m.text = m.text + line m.end_file = survex_file m.end_char = count - save(m) + m.save() filename = "all"