diff --git a/coursebuilder/__main__.py b/coursebuilder/__main__.py index 2234625..d92d24d 100644 --- a/coursebuilder/__main__.py +++ b/coursebuilder/__main__.py @@ -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() @@ -154,7 +165,7 @@ def main(): parser.add_argument('-b','--book',type=str,help="process a whole curriculum book with sections") parser.add_argument('--level',type=int,default=1,help="level of header tags") parser.add_argument('--table-gen',type=str,default=None,help='runs table generator') - + # get arguments args = parser.parse_args() diff --git a/test/simple/Makefile b/test/simple/Makefile index 1c46c26..8ea5c11 100644 --- a/test/simple/Makefile +++ b/test/simple/Makefile @@ -9,4 +9,9 @@ table.de.pdf: all: table.en.pdf table.de.pdf clean: - rm table.en.pdf table.de.pdf \ No newline at end of file + rm -f table.en.pdf table.de.pdf + + +debug: + python ../../coursebuilder -s schema.yaml -m mod.cg.yaml -l de -f fields.yaml + diff --git a/test/simple/mod.cg.yaml b/test/simple/mod.cg.yaml index 6a1e04b..55d76c4 100644 --- a/test/simple/mod.cg.yaml +++ b/test/simple/mod.cg.yaml @@ -16,7 +16,7 @@ form-of-instruction: value: { 'lecture': 2, 'exersise': 1 } term: - value: 1 + value: [1, 3] duration: value: 1 diff --git a/test/simple/schema.yaml b/test/simple/schema.yaml index 9186a4a..9a46893 100644 --- a/test/simple/schema.yaml +++ b/test/simple/schema.yaml @@ -181,12 +181,12 @@ workload: # # credits/ECTS # -credits: +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"