regs/gen: factor out read_input to a new module, csv_input
This commit is contained in:
parent
7e27e40b4e
commit
d622ee04a7
@ -130,8 +130,8 @@ audio.pcm:
|
||||
%.data.o: %.data
|
||||
$(BUILD_BINARY_O)
|
||||
|
||||
regs/%.csv: regs/%.ods
|
||||
libreoffice --headless -convert-to csv:"Text - txt - csv (StarCalc)":44,34,76,,,,true --outdir regs/ $<
|
||||
%.csv: %.ods
|
||||
libreoffice --headless -convert-to csv:"Text - txt - csv (StarCalc)":44,34,76,,,,true --outdir $(dir $@) $<
|
||||
|
||||
maple/maple_bus_commands.hpp: regs/maple_bus_commands.csv regs/gen/maple_bus_commands.py
|
||||
python regs/gen/maple_bus_commands.py $< > $@
|
||||
|
@ -4,7 +4,7 @@ from pprint import pprint
|
||||
from dataclasses import dataclass
|
||||
from typing import Union
|
||||
|
||||
from sh7091 import read_input
|
||||
from csv_input import read_input
|
||||
from generate import renderer
|
||||
|
||||
def aggregate_registers(d):
|
||||
|
27
regs/gen/csv_input.py
Normal file
27
regs/gen/csv_input.py
Normal file
@ -0,0 +1,27 @@
|
||||
import csv
|
||||
|
||||
def as_dict(header, row0):
|
||||
row = [s.strip() for s in row0]
|
||||
return dict(zip(header, row))
|
||||
|
||||
def read_input(filename):
|
||||
with open(filename) as f:
|
||||
reader = csv.reader(f, delimiter=",", quotechar='"')
|
||||
header, *rows = reader
|
||||
|
||||
rows = [
|
||||
as_dict(header, row)
|
||||
for row in rows
|
||||
if "".join(map(str, row)).strip()
|
||||
]
|
||||
|
||||
return rows
|
||||
|
||||
def read_input_headerless(filename):
|
||||
with open(filename) as f:
|
||||
reader = csv.reader(f, delimiter=",", quotechar='"')
|
||||
rows = [
|
||||
[s.strip() for s in row]
|
||||
for row in reader
|
||||
]
|
||||
return rows
|
@ -2,7 +2,9 @@ from collections import defaultdict
|
||||
from dataclasses import dataclass
|
||||
import sys
|
||||
|
||||
from sh7091 import read_input, size_to_type, headers
|
||||
from csv_input import read_input
|
||||
from sh7091 import size_to_type
|
||||
from sh7091 import headers
|
||||
from generate import renderer
|
||||
|
||||
@dataclass
|
||||
|
@ -1,7 +1,7 @@
|
||||
import sys
|
||||
|
||||
from sh7091 import new_writer
|
||||
from sh7091 import read_input
|
||||
from csv_input import read_input
|
||||
from sh7091 import headers
|
||||
from generate import renderer
|
||||
|
||||
|
@ -2,7 +2,7 @@ from dataclasses import dataclass
|
||||
from typing import Union
|
||||
import sys
|
||||
|
||||
from sh7091 import read_input
|
||||
from csv_input import read_input
|
||||
from generate import renderer
|
||||
|
||||
@dataclass
|
||||
|
@ -1,8 +1,8 @@
|
||||
import csv
|
||||
import sys
|
||||
from dataclasses import dataclass
|
||||
from collections import defaultdict
|
||||
|
||||
from csv_input import read_input_headerless
|
||||
from generate import renderer
|
||||
|
||||
@dataclass
|
||||
@ -23,15 +23,6 @@ class Format:
|
||||
field_order: list[str]
|
||||
size: int
|
||||
|
||||
def read_input(filename):
|
||||
with open(filename) as f:
|
||||
reader = csv.reader(f, delimiter=",", quotechar='"')
|
||||
rows = [
|
||||
[s.strip() for s in row]
|
||||
for row in reader
|
||||
]
|
||||
return rows
|
||||
|
||||
def parse_bits(bits: list[str]):
|
||||
bit_order = [7, 6, 5, 4, 3, 2, 1, 0]
|
||||
by_name = defaultdict(list)
|
||||
@ -135,7 +126,7 @@ def render_formats(name, formats):
|
||||
yield "}"
|
||||
|
||||
if __name__ == "__main__":
|
||||
rows = read_input(sys.argv[1])
|
||||
rows = read_input_headerless(sys.argv[1])
|
||||
name = sys.argv[1].split('.')[0].split('_')[-1]
|
||||
assert len(name) == 3 or len(name) == 4
|
||||
formats = parse(rows)
|
||||
|
@ -1,6 +1,6 @@
|
||||
import sys
|
||||
|
||||
from sh7091 import read_input
|
||||
from csv_input import read_input
|
||||
|
||||
from generate import renderer
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import sys
|
||||
|
||||
from sh7091 import new_writer
|
||||
from sh7091 import read_input
|
||||
from csv_input import read_input
|
||||
from sh7091 import headers
|
||||
from sh7091 import blocks
|
||||
from generate import renderer
|
||||
|
@ -1,8 +1,8 @@
|
||||
from dataclasses import dataclass
|
||||
from pprint import pprint
|
||||
import sys
|
||||
import csv
|
||||
|
||||
from csv_input import read_input_headerless
|
||||
from generate import renderer
|
||||
|
||||
_field_types = {
|
||||
@ -182,17 +182,8 @@ def headers():
|
||||
yield "#include <cstdint>"
|
||||
yield ""
|
||||
|
||||
def read_input(filename):
|
||||
with open(filename) as f:
|
||||
reader = csv.reader(f, delimiter=",", quotechar='"')
|
||||
rows = [
|
||||
[s.strip() for s in row]
|
||||
for row in reader
|
||||
]
|
||||
return rows
|
||||
|
||||
if __name__ == "__main__":
|
||||
rows = read_input(sys.argv[1])
|
||||
rows = read_input_headerless(sys.argv[1])
|
||||
namespace = sys.argv[2]
|
||||
declarations = parse(rows)
|
||||
render, out = renderer()
|
||||
|
Loading…
x
Reference in New Issue
Block a user