update with proper formating

This commit is contained in:
Hartmut Seichter 2023-11-05 21:44:45 +01:00
parent 027b49a588
commit 324b5ba4cc
2 changed files with 92 additions and 36 deletions

View file

@ -16,7 +16,7 @@ import os
import textwrap
config_file = 'modulhandbuch.yaml'
line_length = 80
line_length = 128
column_ratio= 0.28
def build_curriculum(input_path,lang='de',pagebreak=False,title=False):
@ -101,23 +101,75 @@ class CourseBuilder:
def set_schema(self,schema = None):
self.__schema = schema
# print(self.__schema)
def process(self,meta = None,lang='en'):
def generate_markdown(self,ti):
h_len = int(line_length * column_ratio)
d_len = line_length-h_len
# if title:
# print('#',desc[lang]['name'],'\n')
print(''.join(['+',"".ljust(h_len,'-'),'+',"".ljust(d_len,'-'),'+']))
headline = False
for k,v in ti:
h = textwrap.wrap(k, h_len, break_long_words=False)
wrapper = textwrap.TextWrapper(d_len)
t = [wrapper.wrap(i) for i in v.split('\n') if i != '']
t = list(itertools.chain.from_iterable(t))
# get rows
rows = list(itertools.zip_longest(h,t,fillvalue=""))
# expand rows
for r in rows:
print(''.join(['|',r[0].ljust(h_len,' '),'|',r[1].ljust(d_len,' '),'|']))
if headline:
print(''.join(['+',"".ljust(h_len,'-'),'+',"".ljust(d_len,'-'),'+']))
else:
print(''.join(['+',"".ljust(h_len,'='),'+',"".ljust(d_len,'='),'+']))
headline = True
# to control pagebreaks for pandoc
# if pagebreak:
# print('\n\\newpage')
fields = ['name','goal']
def process(self,meta,fields,lang):
# fields = ['name','goal','form-of-exam']
# fields = ['form-of-exam']
table_items = []
for field in fields:
match self.__schema[field]['type']:
case 'str': self.process_str(meta,field,lang)
case 'str': table_items.append(self.process_str(meta,field,lang))
case 'enum': table_items.append(self.process_enum(meta,field,lang))
# print(table_items)
def process_str(self,meta,field,lang='de'):
print(self.__schema[field]['label'][lang],':',meta[field][lang])
self.generate_markdown(table_items)
def process_int(self,lang='de'):
def process_label(self,field,lang='de'):
pass
def process_enum(self):
def process_str(self,meta,field,lang='de'):
return [self.__schema[field]['label'][lang],meta[field][lang]]
# print(self.__schema[field]['label'][lang],':',meta[field][lang])
def process_enum(self,meta,field,lang='de'):
v = meta[field]['value']
return [self.__schema[field]['label'][lang],self.__schema[field]['values'][v][lang]]
# print(self.__schema[field]['label'][lang],':',self.__schema[field]['values'][v][lang])
def process_int(self,lang='de'):
pass
@ -132,6 +184,8 @@ def main():
parser.add_argument('-m','--meta',action="extend", nargs="+", type=str,help="course description(s) as YAML file(s)")
parser.add_argument('-l','--lang',help="Language to parse from meta file (use de or en)",default='de')
parser.add_argument('-f','--fields',help="Fields to be used",action="extend", nargs="+", type=str)
# parser.add_argument('-c','--create',action='store_true',help="Create a meta file from description")
# parser.add_argument('-n','--newpage',action='store_true',help="Create a pagebreak after each table")
# parser.add_argument('-t','--title',action='store_true',help="Create a title ahead of each table")
@ -142,6 +196,7 @@ def main():
# get arguments
args = parser.parse_args()
# only run debug
if args.schema:
@ -152,7 +207,7 @@ def main():
for m in args.meta:
with open(m) as fm:
cb.process(yaml.load(fm,Loader=yaml.Loader),lang=args.lang)
cb.process(yaml.load(fm,Loader=yaml.Loader),fields=args.fields,lang=args.lang)
else:
parser.print_help()

View file

@ -19,39 +19,41 @@ common:
author-of-indenture:
form: lecture # lecture, seminar, lecture_seminar, lecture_exersice, project
form-of-exam:
value: written
goal: {
de: "Computergrafik ist ein Schmelztiegel von Technologien in der Informatik mit dem Ziel visuelle
goal:
de: |
Computergrafik ist ein Schmelztiegel von Technologien in der Informatik mit dem Ziel visuelle
Inhalte effizient zu generieren und dem Nutzer zu präsentieren. Studierende können den
Zusammenhang von visuellen Technologien in der Informatik, den zugrunde liegenden mathematischen
Konzepte und der Physiognomie des Menschen, insbesondere des Sehapparates herstellen.
Sie können die Eigenschaften verschiedener Darstellungsformen und -techniken analysieren und
bewerten. Sie lernen grundsätzliche Technologien der 3D Echtzeitdarstellung
kennen und wenden diese an.",
en: "Computer graphics is describing all techniques in computer science
kennen und wenden diese an.
en: |
Computer graphics is describing all techniques in computer science
generating images perceivable by humans. Participants will have a broad
overview of techniques and concepts of computer graphics. They will be
able to apply theoretical concepts in practice. "
}
able to apply theoretical concepts in practice.
content: {
de: "
* Grundkenntnisse der menschlichen Wahrnehmung
* Grundkonzepte der Bilderzeugung, Speicherung und Transformation
* Anwendungen von Computergrafik
* Technologien zur Bilddarstellung
* 3D Modelle, insbesondere Surface- und Volumemodelle
* Transformationspipeline
* Homogene Vektorräume und Transformationen
* Szenengraphen und Echtzeit Rendering APIs
* Bildsyntheseverfahren
* Geometrie und Bild Samplingverfahren und Anti-Aliasing Strategien
* Lichttransport, Physikalische Beleuchtungsmodelle
* Texturierungsverfahren
* Überblick Visualisierung
* Graphische Nutzeroberflächen und Systeme
",
en: "
content:
de: |
* Grundkenntnisse der menschlichen Wahrnehmung
* Grundkonzepte der Bilderzeugung, Speicherung und Transformation
* Anwendungen von Computergrafik
* Technologien zur Bilddarstellung
* 3D Modelle, insbesondere Surface- und Volumemodelle
* Transformationspipeline
* Homogene Vektorräume und Transformationen
* Szenengraphen und Echtzeit Rendering APIs
* Bildsyntheseverfahren
* Geometrie und Bild Samplingverfahren und Anti-Aliasing Strategien
* Lichttransport, Physikalische Beleuchtungsmodelle
* Texturierungsverfahren
* Überblick Visualisierung
* Graphische Nutzeroberflächen und Systeme
en: |
* Basics of human perception
* Concepts of image storage and manipulation
* Applications of computer graphics
@ -66,8 +68,7 @@ content: {
* Texturing
* Overview visualizations
* Graphical User Interfaces
"
}
# German Variant
de: