From 84cc3235415fb3c91db023c228bdf633e3cbd2ce Mon Sep 17 00:00:00 2001 From: ppc19 <ppc19@inf.ufpr.br> Date: Wed, 7 Jul 2021 09:49:25 -0300 Subject: [PATCH] fix derivatives variable substitution --- database/database_table.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/database/database_table.py b/database/database_table.py index b785db3..5ada6e8 100644 --- a/database/database_table.py +++ b/database/database_table.py @@ -818,6 +818,7 @@ class DatabaseTable(Table): case = case.strip("~") # doesn't need "~" anymore str_list = re.findall(r'("[\w]"|[\w.]+)', case) + print('-----------------\n',str_list,'\n--------------------') for substr in str_list: if '.' in substr: # We have a var from another table table = substr.split('.')[0] @@ -836,7 +837,17 @@ class DatabaseTable(Table): var_target = self._get_variable_target(var_name.strip('"'), year) if var_target is not None: var_db = self._protocol.dbcolumn_from_target(var_target)[0] - case = case.replace(var_name, var_db) + case_tokens = case.split(" ") + case_tokens = case.split(' ') + for i in range(0, len(case_tokens)): + # remove everything prior to first, and after last quotation mark (including them) + token_varname = re.sub(r'(^[^\"]*[\"])', '', case_tokens[i]) + token_varname = re.sub(r'([\"][^\"]*$)', '', token_varname) + if (token_varname == var_name): + case_tokens[i] = case_tokens[i].replace(var_name, var_db) + + ch = ' ' + case = ch.join(case_tokens) if table is not self and table not in referred_tables: referred_tables.append(table) -- GitLab