rename int to num and add multinum for arrays of items - add a test case

This commit is contained in:
Hartmut Seichter 2024-04-21 15:47:44 +02:00
parent 2f393dd21c
commit 43cb7eff7e
4 changed files with 24 additions and 8 deletions

View file

@ -78,11 +78,21 @@ class CourseBuilder:
else: else:
return [self.process_label(field,lang),enum_val] return [self.process_label(field,lang),enum_val]
def process_int(self,meta,field,lang='de'): def process_num(self,meta,field,lang='de'):
v = meta[field]['value'] v = meta[field]['value']
t = string.Template(self.get_template(field,lang)) t = string.Template(self.get_template(field,lang))
return [self.process_label(field,lang),t.substitute({'value' : v})] return [self.process_label(field,lang),t.substitute({'value' : v})]
def process_multinum(self,meta,field,lang='de'):
v = meta[field]['value']
t = string.Template(self.get_template(field,lang))
if hasattr(v, "__len__"):
vv = [t.substitute({'value' : ev}) for ev in v]
return [self.process_label(field,lang),', '.join(vv)]
else:
return self.process_num(meta=meta,field=field,lang=lang)
def process_multikey(self,meta,field,lang='de'): def process_multikey(self,meta,field,lang='de'):
""" """
multikey need to assign a numeric value to a key multikey need to assign a numeric value to a key
@ -109,7 +119,8 @@ class CourseBuilder:
match self.__schema[field]['type']: match self.__schema[field]['type']:
case 'str': table_items.append(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)) case 'enum': table_items.append(self.process_enum(meta,field,lang))
case 'int': table_items.append(self.process_int(meta,field,lang)) case ['int', 'num'] : table_items.append(self.process_num(meta,field,lang))
case 'multinum' : table_items.append(self.process_multinum(meta,field,lang))
case 'multikey': table_items.append(self.process_multikey(meta,field,lang)) case 'multikey': table_items.append(self.process_multikey(meta,field,lang))
mdg = MarkdownGenerator() mdg = MarkdownGenerator()

View file

@ -9,4 +9,9 @@ table.de.pdf:
all: table.en.pdf table.de.pdf all: table.en.pdf table.de.pdf
clean: clean:
rm table.en.pdf table.de.pdf rm -f table.en.pdf table.de.pdf
debug:
python ../../coursebuilder -s schema.yaml -m mod.cg.yaml -l de -f fields.yaml

View file

@ -16,7 +16,7 @@ form-of-instruction:
value: { 'lecture': 2, 'exersise': 1 } value: { 'lecture': 2, 'exersise': 1 }
term: term:
value: 1 value: [1, 3]
duration: duration:
value: 1 value: 1

View file

@ -182,11 +182,11 @@ workload:
# credits/ECTS # credits/ECTS
# #
credits: credits:
type: num
label: { label: {
en: "credits and weight of mark", en: "credits and weight of mark",
de: "Kreditpunkte und Gewichtung der Note in der Gesamtnote" de: "Kreditpunkte und Gewichtung der Note in der Gesamtnote"
} }
type: int
template: template:
de: "${value}CP Gewichtung: ${value}CP von 120CP " de: "${value}CP Gewichtung: ${value}CP von 120CP "
en: "${value}CP weight: ${value} / 120 " en: "${value}CP weight: ${value} / 120 "
@ -229,7 +229,7 @@ term:
de: "Semester", de: "Semester",
en: "term" en: "term"
} }
type: int type: multinum
template: template:
de: " ${value}. Semester" de: " ${value}. Semester"
en: " ${value}. semester" en: " ${value}. semester"