From fa11434620967eb9e468b9a8dbcb9d529dad97a8 Mon Sep 17 00:00:00 2001 From: Michael Buesch Date: Sat, 8 Feb 2020 19:12:04 +0100 Subject: [PATCH] symtab: Add micropython support Signed-off-by: Michael Buesch --- awlsim-symtab | 8 ++++++-- libs/tiny_csv/csv.py | 45 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/awlsim-symtab b/awlsim-symtab index 3279b4184..a9e1ec719 100755 --- a/awlsim-symtab +++ b/awlsim-symtab @@ -93,7 +93,9 @@ def main(): try: if opt_infile == "-": - if isPy2Compat: + if isMicroPython: + inDataBytes = sys.stdin.read().encode(SymTabSource.COMPAT_ENCODING) + elif isPy2Compat: inDataBytes = sys.stdin.read() else: inDataBytes = sys.stdin.buffer.read() @@ -133,7 +135,9 @@ def main(): "%s" % (encoding, str(e))) if opt_outfile == "-": - if isPy2Compat: + if isMicroPython: + sys.stdout.write(outDataBytes.decode(SymTabSource.COMPAT_ENCODING)) + elif isPy2Compat: sys.stdout.write(outDataBytes) sys.stdout.flush() else: diff --git a/libs/tiny_csv/csv.py b/libs/tiny_csv/csv.py index 682f48b05..6e27ccffd 100644 --- a/libs/tiny_csv/csv.py +++ b/libs/tiny_csv/csv.py @@ -5,3 +5,48 @@ class Dialect(object): def register_dialect(name, d): pass + +class reader(object): + def __init__(self, csvfile, dialect="excel", **fmtparams): + self.i = 0 + self.lines = [] + for line in csvfile: + elems = [] + elem = [] + inQuote = False + skip = 0 + for i, c in enumerate(line): + if skip > 0: + skip -= 1 + continue + if inQuote: + if c == '"' and not line.startswith('""', i): + inQuote = False + elif c == '"' and line.startswith('""', i): + elem.append(c) + skip = 1 + else: + elem.append(c) + else: + if c == '"': + inQuote = True + elif c == ';': + elems.append("".join(elem)) + elem = [] + else: + elem.append(c) + if line: + elems.append("".join(elem)) + self.lines.append(elems) + + def __iter__(self): + self.i = 0 + return self + + def __next__(self): + try: + line = self.lines[self.i] + self.i += 1 + return line + except IndexError: + raise StopIteration