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
|
%.data.o: %.data
|
||||||
$(BUILD_BINARY_O)
|
$(BUILD_BINARY_O)
|
||||||
|
|
||||||
regs/%.csv: regs/%.ods
|
%.csv: %.ods
|
||||||
libreoffice --headless -convert-to csv:"Text - txt - csv (StarCalc)":44,34,76,,,,true --outdir regs/ $<
|
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
|
maple/maple_bus_commands.hpp: regs/maple_bus_commands.csv regs/gen/maple_bus_commands.py
|
||||||
python 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 dataclasses import dataclass
|
||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
from sh7091 import read_input
|
from csv_input import read_input
|
||||||
from generate import renderer
|
from generate import renderer
|
||||||
|
|
||||||
def aggregate_registers(d):
|
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
|
from dataclasses import dataclass
|
||||||
import sys
|
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
|
from generate import renderer
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from sh7091 import new_writer
|
from sh7091 import new_writer
|
||||||
from sh7091 import read_input
|
from csv_input import read_input
|
||||||
from sh7091 import headers
|
from sh7091 import headers
|
||||||
from generate import renderer
|
from generate import renderer
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ from dataclasses import dataclass
|
|||||||
from typing import Union
|
from typing import Union
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from sh7091 import read_input
|
from csv_input import read_input
|
||||||
from generate import renderer
|
from generate import renderer
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import csv
|
|
||||||
import sys
|
import sys
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
|
from csv_input import read_input_headerless
|
||||||
from generate import renderer
|
from generate import renderer
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@ -23,15 +23,6 @@ class Format:
|
|||||||
field_order: list[str]
|
field_order: list[str]
|
||||||
size: int
|
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]):
|
def parse_bits(bits: list[str]):
|
||||||
bit_order = [7, 6, 5, 4, 3, 2, 1, 0]
|
bit_order = [7, 6, 5, 4, 3, 2, 1, 0]
|
||||||
by_name = defaultdict(list)
|
by_name = defaultdict(list)
|
||||||
@ -135,7 +126,7 @@ def render_formats(name, formats):
|
|||||||
yield "}"
|
yield "}"
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
rows = read_input(sys.argv[1])
|
rows = read_input_headerless(sys.argv[1])
|
||||||
name = sys.argv[1].split('.')[0].split('_')[-1]
|
name = sys.argv[1].split('.')[0].split('_')[-1]
|
||||||
assert len(name) == 3 or len(name) == 4
|
assert len(name) == 3 or len(name) == 4
|
||||||
formats = parse(rows)
|
formats = parse(rows)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from sh7091 import read_input
|
from csv_input import read_input
|
||||||
|
|
||||||
from generate import renderer
|
from generate import renderer
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from sh7091 import new_writer
|
from sh7091 import new_writer
|
||||||
from sh7091 import read_input
|
from csv_input import read_input
|
||||||
from sh7091 import headers
|
from sh7091 import headers
|
||||||
from sh7091 import blocks
|
from sh7091 import blocks
|
||||||
from generate import renderer
|
from generate import renderer
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
import sys
|
import sys
|
||||||
import csv
|
|
||||||
|
|
||||||
|
from csv_input import read_input_headerless
|
||||||
from generate import renderer
|
from generate import renderer
|
||||||
|
|
||||||
_field_types = {
|
_field_types = {
|
||||||
@ -182,17 +182,8 @@ def headers():
|
|||||||
yield "#include <cstdint>"
|
yield "#include <cstdint>"
|
||||||
yield ""
|
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__":
|
if __name__ == "__main__":
|
||||||
rows = read_input(sys.argv[1])
|
rows = read_input_headerless(sys.argv[1])
|
||||||
namespace = sys.argv[2]
|
namespace = sys.argv[2]
|
||||||
declarations = parse(rows)
|
declarations = parse(rows)
|
||||||
render, out = renderer()
|
render, out = renderer()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user