Compare commits

..

2 commits

Author SHA1 Message Date
Hartmut Seichter
bb6c47e4a7 update documentation and copyright 2024-04-21 15:51:11 +02:00
Hartmut Seichter
43cb7eff7e rename int to num and add multinum for arrays of items - add a test case 2024-04-21 15:47:44 +02:00
5 changed files with 30 additions and 11 deletions

View file

@ -1,6 +1,5 @@
# CourseBuilder
Coursebuilder is a preprocessor tool for [pandoc](https://pandoc.org)
to generate multi-lingual curricula documentation tables from
structured representations as a flatfile database. Data scheme and
@ -10,7 +9,8 @@ actual values are kept in YAML files in order to version them with git.
```sh
$> python coursebuilder
usage: [-h] [-m META [META ...]] [-l LANG] [-f FIELDS [FIELDS ...]] [-s SCHEMA] [-p] [-t] [-b BOOK]
usage: [-h] [-m META [META ...]] [-l LANG] [-f FIELDS [FIELDS ...]] [-s SCHEMA] [-p] [-t] [-b BOOK] [--level LEVEL]
[--table-gen TABLE_GEN]
versatile curricula generator
@ -26,11 +26,14 @@ options:
-p, --pagebreak add a pagebreak after each module
-t, --title take first value in list as title
-b BOOK, --book BOOK process a whole curriculum book with sections
--level LEVEL level of header tags
--table-gen TABLE_GEN
runs table generator
```
# Author
(c) Copyright 2020-2023 Hartmut Seichter
© Copyright 2020-2024 Hartmut Seichter
# Licence

View file

@ -78,11 +78,21 @@ class CourseBuilder:
else:
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']
t = string.Template(self.get_template(field,lang))
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'):
"""
multikey need to assign a numeric value to a key
@ -109,7 +119,8 @@ class CourseBuilder:
match self.__schema[field]['type']:
case 'str': table_items.append(self.process_str(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))
mdg = MarkdownGenerator()

View file

@ -9,4 +9,9 @@ table.de.pdf:
all: table.en.pdf table.de.pdf
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 }
term:
value: 1
value: [1, 3]
duration:
value: 1

View file

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