diff --git a/coursebuilder/__main__.py b/coursebuilder/__main__.py index 3f355b4..8abd14c 100644 --- a/coursebuilder/__main__.py +++ b/coursebuilder/__main__.py @@ -66,7 +66,11 @@ class MarkdownGenerator: # expand rows for r in rows: - print(''.join(['|',r[0].ljust(h_len,' '),'|',r[1].ljust(d_len,' '),'|'])) + # insider recognize this as the computational dump(b)ness feature + if '' in r[0] or '' in r[1]: + print(''.join(['+',"".ljust(h_len,'-'),'+',"".ljust(d_len,'-'),'+'])) + else: + print(''.join(['|',r[0].ljust(h_len,' '),'|',r[1].ljust(d_len,' '),'|'])) if headline: print(''.join(['+',"".ljust(h_len,'-'),'+',"".ljust(d_len,'-'),'+'])) @@ -100,6 +104,11 @@ class CourseBuilder: else: return True + def needs_spec(self,field): + if 'spec' in self.__schema[field]: + return self.__schema[field] + else: + return False def process_label(self,field,lang='de'): # processes the label of a field item @@ -107,13 +116,31 @@ class CourseBuilder: def process_str(self,meta,field,lang='de'): if self.is_translatable(field): + return [self.process_label(field,lang),meta[field][lang]] else: + if not 'value' in meta[field]: + raise AssertionError(field,'incomplete') + return [self.process_label(field,lang),meta[field]['value']] def process_enum(self,meta,field,lang='de'): - v = meta[field]['value'] - return [self.process_label(field,lang),self.__schema[field]['values'][v][lang]] + """ + enum have a specification 'specs' option + that can be forced by the scheme + """ + vv = meta[field]['value'] + enum_val = self.__schema[field]['values'][vv][lang] + + if self.needs_spec(field): + + t = string.Template(self.get_template(field=field,lang=lang)) + + spec = meta[field]['spec'][lang] + + return [self.process_label(field,lang),t.substitute({'value': enum_val,'spec': spec})] + else: + return [self.process_label(field,lang),enum_val] def process_int(self,meta,field,lang='de'): v = meta[field]['value'] @@ -121,11 +148,13 @@ class CourseBuilder: return [self.process_label(field,lang),t.substitute({'value' : v})] def process_multikey(self,meta,field,lang='de'): + """ + multikey need to assign a numeric value to a key + """ vs = meta[field]['value'] t = string.Template(self.get_template(field,lang)) k = self.process_label(field,lang) - v = "" parts = [] diff --git a/test.md b/test.md deleted file mode 100644 index 4f6bb50..0000000 --- a/test.md +++ /dev/null @@ -1,10 +0,0 @@ ----------------------------------------------------------------------------------------------------------------------------------- -Inhalt Test ------------------------------------- --------------------------------------------------------------------------------------------- -Modulinhalte 1. Section One - 2. Section Two - 1. Section Two Sub One - 2. Section Two Sub Two - 3. Section Two Sub Three - 4. Section Two Sub Four ----------------------------------------------------------------------------------------------------------------------------------- diff --git a/test/simple/mod.cg.yaml b/test/simple/mod.cg.yaml index d054d2f..29c8148 100644 --- a/test/simple/mod.cg.yaml +++ b/test/simple/mod.cg.yaml @@ -113,6 +113,10 @@ workload: form-of-exam: value: written + spec: + de: "120min Klausur" + en: "120min exam" + frequency: value: once_per_year diff --git a/test/simple/mod.test.yaml b/test/simple/mod.test.yaml index d538f18..7037a1f 100644 --- a/test/simple/mod.test.yaml +++ b/test/simple/mod.test.yaml @@ -12,41 +12,6 @@ name: # content: - en: | - 1. Dog - 1. German Shepherd - 2. Belgian Shepherd - 1. Malinois - 2. Groenendael - 4. Tervuren - 2. Cat - 1. Siberian - 2. Siamese - - -content-alt: - en: | - 1. Dog - - 1. German Shepherd - - 2. Belgian Shepherd - - 1. Malinois - - 2. Groenendael - - 4. Tervuren - - 2. Cat - - 1. Siberian - - 2. Siamese - - - -content-blah: en: | 1. Blah @@ -72,6 +37,8 @@ content-blah: 4. Blub + + 5. Blah 6. Blah and Blub diff --git a/test/simple/schema.yaml b/test/simple/schema.yaml index d3a8858..a1058d3 100644 --- a/test/simple/schema.yaml +++ b/test/simple/schema.yaml @@ -11,6 +11,17 @@ name: en: "name of course" } +# +# Modulverantwortliche:r +# +instructor: + type: str + translatable: false + label: + de: "Modulverantwortlicher/Modulverantwortliche" + en: "module instructor" + + # # Kürzel / ID # @@ -22,20 +33,22 @@ id: en: "code" } -# -# Modulverantwortliche:r -# -instructor: - type: str - translatable: false - label: { - de: "Modulverantwortliche:r", - en: "module instructor" - } # # Qualifikationsziele # + +# Welche fachbezogenen, methodischen, fachübergreifende Kompetenzen, +# Schlüsselqualifikationen - werden erzielt (erworben)? Diese sind +# an der zu definierenden Gesamtqualifikation (angestrebter Abschluss) auszurichten. +# +# Lernergebnisse sind Aussagen darüber, was ein Studierender nach Abschluss des Moduls weiß, +# versteht und in der Lage ist zu tun. Die Formulierung sollte sich am Qualifikationsrahmen +# für Deutsche Hochschulabschlüsse orientieren und Inhaltswiederholungen vermeiden. +# +# Des Weiteren finden Sie im QM-Portal die „Handreichung zur Beschreibung von Lernzielen“ +# als Formulierungshilfe. + goal: type: str label: { @@ -46,6 +59,12 @@ goal: # # Modulinhalte # + +# Welche fachlichen, methodischen, fachpraktischen und fächerübergreifenden +# Inhalte sollen vermittelt werden? +# +# Es ist ein stichpunktartiges Inhaltsverzeichnis zu erstellen. + content: type: str label: { @@ -56,6 +75,14 @@ content: # # Lehrform # + +# +# Welche Lehr- und Lernformen werden angewendet? +# (Vorlesungen, Übungen, Seminare, Praktika, +# Projektarbeit, Selbststudium) +# +# Es sind nur Werte aus der Prüfungsordung zugelassen +# form-of-instruction: label: { de: "Lehrform(en)", @@ -95,6 +122,14 @@ form-of-instruction: # # Voraussetzungen für die Teilnahme # + +# Für jedes Modul sind die Voraussetzungen für die Teilnahme zu beschreiben. +# Welche Kenntnisse, Fähigkeiten und Fertigkeiten sind für eine +# erfolgreiche Teilnahme vorauszusetzen? +# +# Alternativ können die Module benannt werden welche für die erfolgreiche +# Teilnahme im Vorfeld zu belegen sind. + prerequisites: type: str label: { @@ -105,6 +140,9 @@ prerequisites: # # Literatur und multimediale Lehr- und Lernprogramme # +# +# Wie können die Studierenden sich auf die Teilnahme an diesem Modul vorbereiten? +# media-of-instruction: type: str label: { @@ -178,6 +216,11 @@ form-of-exam: en: "alternative examination" } } + spec: true + template: + de: "${value} (${spec})" + en: "${value} (${spec})" + # # Semester @@ -241,6 +284,6 @@ kind: remarks: type: str label: { - de: "Bemerkungen", + de: "Besonderes", en: "remarks" } \ No newline at end of file