Initial Version
This commit is contained in:
commit
3046b1ee7b
21 changed files with 491 additions and 0 deletions
support_formatter/logic
0
support_formatter/logic/__init__.py
Normal file
0
support_formatter/logic/__init__.py
Normal file
44
support_formatter/logic/csv_processor.py
Normal file
44
support_formatter/logic/csv_processor.py
Normal file
|
@ -0,0 +1,44 @@
|
|||
import csv
|
||||
import pathlib
|
||||
|
||||
class FileTypeInvalidError(ValueError):
|
||||
pass
|
||||
|
||||
def determine_type(row):
|
||||
if set(row) == set(["servant", "level", "np_level", "skills", "bce"]):
|
||||
return "servants"
|
||||
if set(row) == set(["ce", "ce_level", "mlb"]):
|
||||
return "ces"
|
||||
return "unknown"
|
||||
|
||||
def process_csv(path: pathlib.Path):
|
||||
data, entries = {}, []
|
||||
|
||||
with open(path, "r") as csv_file:
|
||||
csv_reader = csv.DictReader(csv_file)
|
||||
csv_type = determine_type(csv_reader.fieldnames)
|
||||
|
||||
if csv_type == "unknown":
|
||||
raise FileTypeInvalidError()
|
||||
|
||||
for row in csv_reader:
|
||||
entry = row.copy()
|
||||
if csv_type == "servants":
|
||||
entry.update({
|
||||
"level": int(entry['level']),
|
||||
"np_level": int(entry['np_level']),
|
||||
"bce": bool(entry["bce"])
|
||||
})
|
||||
else:
|
||||
entry.update({
|
||||
"ce_level": int(entry['ce_level']),
|
||||
"mlb": bool(entry["mlb"])
|
||||
})
|
||||
entries.append(entry)
|
||||
|
||||
if csv_type == "servants":
|
||||
data = { "support_list": entries }
|
||||
else:
|
||||
data = { "ce_list": entries }
|
||||
|
||||
return data
|
Loading…
Add table
Add a link
Reference in a new issue