4 from os
.path
import dirname
, join
6 from collections
import OrderedDict
9 def find_wiki_file(name
):
10 filedir
= os
.path
.dirname(os
.path
.abspath(__file__
))
11 tabledir
= join(filedir
, 'isatables')
12 file_path
= join(tabledir
, name
)
16 file_path
= find_wiki_file(name
)
17 with
open(file_path
, 'r') as csvfile
:
18 reader
= csv
.DictReader(csvfile
)
22 #for v in row.values():
23 # if 'SPR' in v: # skip all SPRs
25 for v
in row
.values():
31 return field
.startswith('R') or field
.startswith('FR')
34 keycolumns
= ['in1', 'in2', 'in3', 'out', 'CR in', 'CR out',
35 'ldst len'] # don't think we need these: , 'rc', 'lk']
40 for key
in keycolumns
:
42 if key
in ['in1', 'in2', 'in3']:
43 # TODO: replace this with a counter row['in']
44 # will need row['in'] initialising to 0 *outside* of the for-loop
56 if key
.startswith('CR'):
57 if row
[key
].startswith('NONE'):
62 if key
.startswith('ldst'):
63 if row
[key
].startswith('NONE'):
68 if key
in ['rc', 'lk']:
71 elif row
[key
] == 'NONE':
82 for k
, v
in d
.items():
83 res
.append("%s: %s" % (k
, v
))
87 return ' | '.join(d
) + "|"
94 dictkeys
= OrderedDict()
96 pth
= find_wiki_file("*.csv")
97 for fname
in glob(pth
):
105 csvname
= os
.path
.split(fname
)[1]
111 dkey
= create_key(row
)
112 key
= tuple(dkey
.values())
117 bykey
[key
].append((csvname
, row
['opcode'], row
['comment'],
118 row
['form'].upper() + '-Form'))
120 primarykeys
= list(primarykeys
)
125 print ('[[!table data="""')
126 print (tformat(keycolumns
)) # TODO use alternative here which has
127 # 'in' rather than in1, in2, in3
129 for key
in primarykeys
:
130 print (tformat(dictkeys
[key
].values()))
134 for key
in primarykeys
:
135 print ("## %s " % dformat(dictkeys
[key
]))
137 print ('[[!table data="""')
138 print (tformat(['CSV', 'opcode', 'asm', 'form']))
147 for fname
, csv
in csvs
.items():
150 if __name__
== '__main__':