From 299064dcb2939fc6457cb546204e9e61a41ad831 Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Thu, 24 Dec 2020 16:34:16 -0600 Subject: [PATCH] Break initialization into smaller functions --- src/pgwui_core/core.py | 52 +++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/src/pgwui_core/core.py b/src/pgwui_core/core.py index 1e96f87..99d8cce 100644 --- a/src/pgwui_core/core.py +++ b/src/pgwui_core/core.py @@ -861,6 +861,33 @@ class UploadData(DBData): lineno Number of lines processed (including header line) ''' + def create_mapper(self, do_trim, null_data, null_rep): + # Create mapper to frob data elements + if null_data: + null_rep = do_trim(null_rep) + + def mapper(st): + st = do_trim(st) + # psycopg2 maps None to NULL + return None if st == null_rep else st + self._mapper = mapper + else: + self._mapper = do_trim + + def create_parser(self, file_fmt, eol): + # Create parser to read raw lines into a list + if file_fmt == CSV: + self._parser = lambda st: self._extend(st, + next(csv_reader((st,)))) + else: # Tab delimited format + neg_eollen = -len(eol) + + def tab_parser(line): + if neg_eollen and line[neg_eollen:] == eol: + line = line[:neg_eollen] + return self._extend(line, line.split('\t')) + self._parser = tab_parser + def __init__(self, fileo, file_fmt, null_data, null_rep, trim=True): ''' fileo Uploaded file object @@ -914,31 +941,10 @@ class UploadData(DBData): # Get column headings eol, self.headers = get_headers() - neg_eollen = -len(eol) self.cols = len(self.headers.tuples) - # Create parser to read raw lines into a list - if file_fmt == CSV: - self._parser = lambda st: self._extend(st, - next(csv_reader((st,)))) - else: # Tab delimited format - def tab_parser(line): - if neg_eollen and line[neg_eollen:] == eol: - line = line[:neg_eollen] - return self._extend(line, line.split('\t')) - self._parser = tab_parser - - # Create mapper to frob data elements - if null_data: - null_rep = do_trim(null_rep) - - def mapper(st): - st = do_trim(st) - # psycopg2 maps None to NULL - return None if st == null_rep else st - self._mapper = mapper - else: - self._mapper = do_trim + self.create_parser(file_fmt, eol) + self.create_mapper(do_trim, null_data, null_rep) def _thunk(self): ''' -- 2.34.1