From 7c73d3b5f6d04dfa55200c68122424ad7f7b6ef9 Mon Sep 17 00:00:00 2001 From: Hartmut Seichter Date: Sun, 19 May 2024 10:03:00 +0200 Subject: [PATCH] disable old processing code --- coursebuilder/__main__.py | 40 +++++------ coursebuilder/schema.py | 136 +++++++++++++++++++------------------- test/Makefile | 2 +- test/schema.yaml | 4 +- 4 files changed, 89 insertions(+), 93 deletions(-) diff --git a/coursebuilder/__main__.py b/coursebuilder/__main__.py index 65b2393..b55e6e5 100644 --- a/coursebuilder/__main__.py +++ b/coursebuilder/__main__.py @@ -56,33 +56,28 @@ class CourseBuilder: for m in args.meta: with open(m) as fm: - meta = yaml.load(fm,Loader=yaml.Loader) - - table_items = schema.process(meta=meta,fields=actual_fields,lang=args.lang) if query == None else schema.to_list_of_dict(meta=meta,fields=actual_fields,lang=args.lang) - if args.legacy: - MarkdownGenerator.generate_table_legacy(table_items=table_items,add_pagebreak=args.pagebreak,title_template=args.title,first_colwidth=args.leftcol) - elif query: - query.run(table_items) - - # for i in table_items: - # print(i) - - q = schema.to_list_of_tuple(meta=meta,fields=actual_fields,lang=args.lang) - - for i in q: - print(i) + MarkdownGenerator.generate_table_legacy( + table_items=schema.to_list_of_tuple( + meta=yaml.load(fm,Loader=yaml.Loader), + fields=actual_fields, + lang=args.lang), + add_pagebreak=args.pagebreak, + title_template=args.title, + first_colwidth=args.leftcol) - # MarkdownGenerator.generate_table(table_items=q,add_pagebreak=args.pagebreak,title_template=args.title,first_colwidth=args.leftcol) - else: - MarkdownGenerator.generate_table(table_items=table_items,add_pagebreak=args.pagebreak,title_template=args.title,first_colwidth=args.leftcol) + MarkdownGenerator.generate_table( + table_items=schema.to_list_of_tuple( + meta=yaml.load(fm,Loader=yaml.Loader), + fields=actual_fields, + lang=args.lang), + add_pagebreak=args.pagebreak, + title_template=args.title, + first_colwidth=args.leftcol) - - - @staticmethod def run(): @@ -104,8 +99,7 @@ class CourseBuilder: parser.add_argument('-o','--out',type=str,default=None,help='set the output type') parser.add_argument('--legacy',action="store_true",help="use legacy generator mode for compatibility") - - parser.add_argument('--leftcol',type=int,default=28,help='maximum size of left column') + parser.add_argument('--leftcol',type=int,default=35,help='maximum size of left column') # get arguments args = parser.parse_args() diff --git a/coursebuilder/schema.py b/coursebuilder/schema.py index ee730c0..a81fda7 100644 --- a/coursebuilder/schema.py +++ b/coursebuilder/schema.py @@ -26,92 +26,92 @@ class Schema: else: return False - def process_label(self,field,lang='de'): - # processes the label of a field item - return self.__schema[field]['label'][lang] + # def process_label(self,field,lang='de'): + # # processes the label of a field item + # return self.__schema[field]['label'][lang] - 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') + # 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']] + # return [self.process_label(field,lang),meta[field]['value']] - def process_enum(self,meta,field,lang='de'): - """ - 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] + # def process_enum(self,meta,field,lang='de'): + # """ + # 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): + # if self.needs_spec(field): - t = string.Template(self.get_template(field=field,lang=lang)) + # t = string.Template(self.get_template(field=field,lang=lang)) - spec = meta[field]['spec'][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] + # return [self.process_label(field,lang),t.substitute({'value': enum_val,'spec': spec})] + # else: + # return [self.process_label(field,lang),enum_val] - 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_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'): - """multinums have various values""" - 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_multinum(self,meta,field,lang='de'): + # """multinums have various values""" + # 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 - """ - vs = meta[field]['value'] - t = string.Template(self.get_template(field,lang)) + # 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) + # k = self.process_label(field,lang) - parts = [] + # parts = [] - for e in vs: - kk = self.__schema[field]['keys'][e][lang] - parts.append(t.substitute({'key': kk, 'value' : vs[e]})) + # for e in vs: + # kk = self.__schema[field]['keys'][e][lang] + # parts.append(t.substitute({'key': kk, 'value' : vs[e]})) - return [k,', '.join(parts)] + # return [k,', '.join(parts)] - def process(self,meta,fields,lang): + # def process(self,meta,fields,lang): - table_items = [] + # table_items = [] - # iterate over requested fields - for field in fields: - try: - # correlate with schema and append - 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' | '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 _: raise ValueError - except Exception as exp: - print(field,' not resolvable in ',self.__schema,exp) + # # iterate over requested fields + # for field in fields: + # try: + # # correlate with schema and append + # 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' | '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 _: raise ValueError + # except Exception as exp: + # print(field,' not resolvable in ',self.__schema,exp) - # maybe return tableitems as np.Dataframe? - return table_items + # # maybe return tableitems as np.Dataframe? + # return table_items def get_value(self,meta,field,lang): """treats receiving the value like a variant, @@ -126,7 +126,7 @@ class Schema: return [{'field' : field, # field name 'lang' : lang, # language shortcode 'type' : self.__schema[field]['type'], # datatype - 'label' : self.process_label(field,lang), # label + 'label' : self.__schema[field]['label'][lang], # label 'value' : self.get_value(meta,field,lang), # actual value 'template' : self.__schema[field]['template'][lang] if 'template' in self.__schema[field] else None, # getting crazy with nested dict comprehension @@ -137,7 +137,9 @@ class Schema: for field in fields] def to_list_of_tuple(self,meta,fields,lang): - # generate a list of tuples with key and value (text) + """ + generates a list of tuples with a label and value (text) + """ list = [] for r in self.to_list_of_dict(meta,fields,lang): match r['type']: diff --git a/test/Makefile b/test/Makefile index f662980..b449688 100644 --- a/test/Makefile +++ b/test/Makefile @@ -23,7 +23,7 @@ ${target_de}: python ${coursebuilder} -s schema.yaml -m mod.cg.yaml -l de -f fields.yaml | pandoc ${target_flags} -o ${target_de} ${target_de_book}: - python ${coursebuilder} -s schema.yaml -b book.yaml -p --title "### {}" -l de --leftcol 36 | pandoc ${target_flags} -V lang:de -o ${target_de_book} + python ${coursebuilder} -s schema.yaml -b book.yaml -p --title "### {}" -l de --leftcol 20 --legacy | pandoc ${target_flags} -V lang:de -o ${target_de_book} clean: rm -f ${targets} diff --git a/test/schema.yaml b/test/schema.yaml index 94c7820..a7cf2f3 100644 --- a/test/schema.yaml +++ b/test/schema.yaml @@ -231,8 +231,8 @@ term: en: "term" } template: - de: " ${value}\\. Semester" - en: " ${value}\\. semester" + de: "{value}\\. Semester" + en: "{value}\\. semester" # # Häufigkeit des Angebots