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 import textwrap
config_file = 'modulhandbuch.yaml' config_file = 'modulhandbuch.yaml'
line_length = 80 line_length = 128
column_ratio= 0.28 column_ratio= 0.28
def build_curriculum(input_path,lang='de',pagebreak=False,title=False): def build_curriculum(input_path,lang='de',pagebreak=False,title=False):
@ -101,23 +101,75 @@ class CourseBuilder:
def set_schema(self,schema = None): def set_schema(self,schema = None):
self.__schema = schema self.__schema = schema
# print(self.__schema)
def process(self,meta = None,lang='en'):
fields = ['name','goal'] 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')
def process(self,meta,fields,lang):
# fields = ['name','goal','form-of-exam']
# fields = ['form-of-exam']
table_items = []
for field in fields: for field in fields:
match self.__schema[field]['type']: 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))
def process_str(self,meta,field,lang='de'): # print(table_items)
print(self.__schema[field]['label'][lang],':',meta[field][lang])
def process_int(self,lang='de'): self.generate_markdown(table_items)
def process_label(self,field,lang='de'):
pass 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 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('-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('-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('-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('-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") # parser.add_argument('-t','--title',action='store_true',help="Create a title ahead of each table")
@ -142,6 +196,7 @@ def main():
# get arguments # get arguments
args = parser.parse_args() args = parser.parse_args()
# only run debug # only run debug
if args.schema: if args.schema:
@ -152,7 +207,7 @@ def main():
for m in args.meta: for m in args.meta:
with open(m) as fm: 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: else:
parser.print_help() parser.print_help()

View file

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