MVP for tablegenerator
This commit is contained in:
parent
021a0f69d3
commit
2f393dd21c
1 changed files with 36 additions and 24 deletions
|
@ -1,60 +1,72 @@
|
||||||
|
|
||||||
import token
|
import token
|
||||||
import string
|
import string
|
||||||
|
import tempfile
|
||||||
|
import subprocess
|
||||||
|
import os
|
||||||
|
|
||||||
class TableGenerator:
|
class TableGenerator:
|
||||||
|
"""
|
||||||
|
Really hacky method to create latex > dvi > SVG to create images to include
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.__cols_map = {
|
self.__cols_map = {
|
||||||
"de": {'': 'Thema ', 'A': " Erkennen", 'B': ' Verstehen', 'C': ' Anwenden', 'D' : ' Analysiseren', 'E' : ' Synthetisieren' }
|
"de": {'': 'Thema ', 'A': " Erkennen", 'B': ' Verstehen', 'C': ' Anwenden', 'D' : ' Analysiseren', 'E' : ' Synthetisieren' }
|
||||||
}
|
}
|
||||||
self.__checkmark = "X"
|
self.__checkmark = "x"
|
||||||
|
|
||||||
def generate_table(self,data,lang='de'):
|
def generate_table(self,data,lang='de'):
|
||||||
|
|
||||||
header = False
|
rows = [" & ".join(self.__cols_map[lang].values()) + '\\\\']
|
||||||
|
|
||||||
for token in data.split(','):
|
for token in data.split(','):
|
||||||
if not header:
|
|
||||||
head_str = "| " + " | ".join(self.__cols_map[lang].values()) + " |"
|
|
||||||
|
|
||||||
print(head_str)
|
t = tuple(token.split(':')[:2])
|
||||||
|
|
||||||
ruler = ['-' * len(s) for s in self.__cols_map[lang].values()]
|
|
||||||
ruler_str = "| " + " | ".join(ruler) + " |"
|
|
||||||
|
|
||||||
print(ruler_str)
|
|
||||||
|
|
||||||
header = True
|
|
||||||
|
|
||||||
t = tuple(token.split(':')[:2])
|
|
||||||
|
|
||||||
row = [t[0]]
|
row = [t[0]]
|
||||||
for k in self.__cols_map[lang].keys():
|
for k in list(self.__cols_map[lang].keys())[1:]:
|
||||||
if k in t[1]:
|
if k in t[1]:
|
||||||
row.append(self.__checkmark)
|
row.append(self.__checkmark)
|
||||||
else:
|
else:
|
||||||
row.append(' ')
|
row.append(' ')
|
||||||
|
|
||||||
print(' | '.join(row))
|
rows.append(' & '.join(row) + '\\\\')
|
||||||
|
|
||||||
self.run_template()
|
self.run_template(rows=rows)
|
||||||
|
|
||||||
|
|
||||||
def run_template(self):
|
def run_template(self,rows = [],lang = 'de'):
|
||||||
|
|
||||||
t = string.Template(self.get_latex_template())
|
t = string.Template(self.get_latex_template())
|
||||||
print(t.substitute({ 'value' : "Test"}))
|
|
||||||
|
with tempfile.NamedTemporaryFile('w',delete=False,prefix='cb-') as fp:
|
||||||
|
fp.write(t.substitute({ 'th' : ''.join(rows[:1]), 'td' : '\n'.join(rows[1:]) }))
|
||||||
|
fp.close()
|
||||||
|
subprocess.run(["latex",fp.name])
|
||||||
|
subprocess.run(["dvisvgm",os.path.basename(fp.name) + '.dvi'])
|
||||||
|
# subprocess.run(["mv",os.path.basename(fp.name) + '.svg','.'])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def get_latex_template(self,lang = 'de') -> str:
|
||||||
|
|
||||||
def get_latex_template(self) -> str:
|
# tabular formating
|
||||||
|
layout = ['l'] + ['c' for _ in range(len(self.__cols_map[lang]))]
|
||||||
|
|
||||||
return (r'\documentclass{article}'
|
return (r'\documentclass{article}'
|
||||||
r'\usepackage[utf8]{inputenc}'
|
r'\usepackage[utf8]{inputenc}'
|
||||||
r'\usepackage[]{tabularx}'
|
r'\usepackage[]{tabularx}'
|
||||||
|
r'\usepackage[default,oldstyle,scale=0.95]{opensans}'
|
||||||
|
r'\usepackage[T1]{fontenc}'
|
||||||
r'\usepackage[margin=0.7in]{geometry}'
|
r'\usepackage[margin=0.7in]{geometry}'
|
||||||
r'\begin{document}'
|
r'\begin{document}'
|
||||||
r'\begin{table}[ht]'
|
r'\begin{table}[ht]' +
|
||||||
r'\begin{tabular}{l c c}'
|
'\\begin{{tabular}} {{ {0} }}'.format(' '.join(layout)) +
|
||||||
r'${value}'
|
r'\hline'
|
||||||
|
r' ${th}'
|
||||||
|
r'\hline'
|
||||||
|
r' ${td}' +
|
||||||
|
r'\hline'
|
||||||
r'\end{tabular}'
|
r'\end{tabular}'
|
||||||
r'\end{table}'
|
r'\end{table}'
|
||||||
r'\end{document}')
|
r'\end{document}')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue