From 6951ffa7c7aa4696e025275aac5d80819035359a Mon Sep 17 00:00:00 2001 From: Joey Wang Date: Fri, 3 Mar 2023 13:33:52 +0800 Subject: [PATCH] Split [PATTERNS] in/out --- api/s11_patterns.py | 51 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/api/s11_patterns.py b/api/s11_patterns.py index 615736a..7ed913f 100644 --- a/api/s11_patterns.py +++ b/api/s11_patterns.py @@ -97,6 +97,45 @@ def delete_pattern(name: str, cs: ChangeSet) -> ChangeSet: # [EPA2][IN][OUT] # ;desc # id mult1 mult2 ..... +#-------------------------------------------------------------- +def inp_in_pattern(section: list[str]) -> ChangeSet: + descs = {} + patterns: dict[str, list[float]] = {} + + count = len(section) + for i in range(0, count): + if section[i].startswith(';'): + # this is description + next = i + 1 + if next < count and section[next].startswith(';') == False: + next_tokens = section[next].split() + descs[next_tokens[0]] = section[i].removeprefix(';') + continue + + tokens = section[i].split() + if tokens[0] not in patterns: + patterns[tokens[0]] = [] + for token in tokens[1:]: + patterns[tokens[0]].append(float(token)) + + cs = ChangeSet() + for id, factors in patterns.items(): + cs.append(g_add_prefix | {'type': 'pattern', 'id' : id, 'factors' : factors}) + + #print(descs) + return cs + + +def inp_out_pattern(name: str) -> list[str]: + lines = [] + objs = read_all(name, f"select * from patterns order by _order") + for obj in objs: + id = obj['id'] + factor = obj['factor'] + lines.append(f'{id} {factor}') + return lines + + #-------------------------------------------------------------- # [EPA3][IN][OUT] # id FIXED (interval) @@ -104,7 +143,7 @@ def delete_pattern(name: str, cs: ChangeSet) -> ChangeSet: # id VARIABLE # id time1 factor1 time2 factor2 ... #-------------------------------------------------------------- -def inp_in_pattern(section: list[str]) -> ChangeSet: +def inp_in_pattern_v3(section: list[str]) -> ChangeSet: descs = {} patterns: dict[str, list[float]] = {} @@ -146,11 +185,5 @@ def inp_in_pattern(section: list[str]) -> ChangeSet: return cs -def inp_out_pattern(name: str) -> list[str]: - lines = [] - objs = read_all(name, f"select * from patterns order by _order") - for obj in objs: - id = obj['id'] - factor = obj['factor'] - lines.append(f'{id} {factor}') - return lines +def inp_out_pattern_v3(name: str) -> list[str]: + return []