disable old processing code

This commit is contained in:
Hartmut Seichter 2024-05-19 10:03:00 +02:00
parent 1381c37500
commit 7c73d3b5f6
4 changed files with 89 additions and 93 deletions

View file

@ -56,31 +56,26 @@ class CourseBuilder:
for m in args.meta: for m in args.meta:
with open(m) as fm: 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: 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) MarkdownGenerator.generate_table_legacy(
table_items=schema.to_list_of_tuple(
# for i in table_items: meta=yaml.load(fm,Loader=yaml.Loader),
# print(i) fields=actual_fields,
lang=args.lang),
q = schema.to_list_of_tuple(meta=meta,fields=actual_fields,lang=args.lang) add_pagebreak=args.pagebreak,
title_template=args.title,
for i in q: first_colwidth=args.leftcol)
print(i)
# MarkdownGenerator.generate_table(table_items=q,add_pagebreak=args.pagebreak,title_template=args.title,first_colwidth=args.leftcol)
else: 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 @staticmethod
@ -104,8 +99,7 @@ class CourseBuilder:
parser.add_argument('-o','--out',type=str,default=None,help='set the output type') 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('--legacy',action="store_true",help="use legacy generator mode for compatibility")
parser.add_argument('--leftcol',type=int,default=35,help='maximum size of left column')
parser.add_argument('--leftcol',type=int,default=28,help='maximum size of left column')
# get arguments # get arguments
args = parser.parse_args() args = parser.parse_args()

View file

@ -26,92 +26,92 @@ class Schema:
else: else:
return False return False
def process_label(self,field,lang='de'): # def process_label(self,field,lang='de'):
# processes the label of a field item # # processes the label of a field item
return self.__schema[field]['label'][lang] # return self.__schema[field]['label'][lang]
def process_str(self,meta,field,lang='de'): # def process_str(self,meta,field,lang='de'):
if self.is_translatable(field): # if self.is_translatable(field):
return [self.process_label(field,lang),meta[field][lang]] # return [self.process_label(field,lang),meta[field][lang]]
else: # else:
if not 'value' in meta[field]: # if not 'value' in meta[field]:
raise AssertionError(field,'incomplete') # 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'): # def process_enum(self,meta,field,lang='de'):
""" # """
enum have a specification 'specs' option # enum have a specification 'specs' option
that can be forced by the scheme # that can be forced by the scheme
""" # """
vv = meta[field]['value'] # vv = meta[field]['value']
enum_val = self.__schema[field]['values'][vv][lang] # 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})] # return [self.process_label(field,lang),t.substitute({'value': enum_val,'spec': spec})]
else: # else:
return [self.process_label(field,lang),enum_val] # return [self.process_label(field,lang),enum_val]
def process_num(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'): # def process_multinum(self,meta,field,lang='de'):
"""multinums have various values""" # """multinums have various values"""
v = meta[field]['value'] # v = meta[field]['value']
t = string.Template(self.get_template(field,lang)) # t = string.Template(self.get_template(field,lang))
if hasattr(v, "__len__"): # if hasattr(v, "__len__"):
vv = [t.substitute({'value' : ev}) for ev in v] # vv = [t.substitute({'value' : ev}) for ev in v]
return [self.process_label(field,lang),', '.join(vv)] # return [self.process_label(field,lang),', '.join(vv)]
else: # else:
return self.process_num(meta=meta,field=field,lang=lang) # 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
""" # """
vs = meta[field]['value'] # vs = meta[field]['value']
t = string.Template(self.get_template(field,lang)) # 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: # for e in vs:
kk = self.__schema[field]['keys'][e][lang] # kk = self.__schema[field]['keys'][e][lang]
parts.append(t.substitute({'key': kk, 'value' : vs[e]})) # 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 # # iterate over requested fields
for field in fields: # for field in fields:
try: # try:
# correlate with schema and append # # correlate with schema and append
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' | 'num' : table_items.append(self.process_num(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 '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))
case _: raise ValueError # case _: raise ValueError
except Exception as exp: # except Exception as exp:
print(field,' not resolvable in ',self.__schema,exp) # print(field,' not resolvable in ',self.__schema,exp)
# maybe return tableitems as np.Dataframe? # # maybe return tableitems as np.Dataframe?
return table_items # return table_items
def get_value(self,meta,field,lang): def get_value(self,meta,field,lang):
"""treats receiving the value like a variant, """treats receiving the value like a variant,
@ -126,7 +126,7 @@ class Schema:
return [{'field' : field, # field name return [{'field' : field, # field name
'lang' : lang, # language shortcode 'lang' : lang, # language shortcode
'type' : self.__schema[field]['type'], # datatype '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 'value' : self.get_value(meta,field,lang), # actual value
'template' : self.__schema[field]['template'][lang] if 'template' in self.__schema[field] else None, 'template' : self.__schema[field]['template'][lang] if 'template' in self.__schema[field] else None,
# getting crazy with nested dict comprehension # getting crazy with nested dict comprehension
@ -137,7 +137,9 @@ class Schema:
for field in fields] for field in fields]
def to_list_of_tuple(self,meta,fields,lang): 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 = [] list = []
for r in self.to_list_of_dict(meta,fields,lang): for r in self.to_list_of_dict(meta,fields,lang):
match r['type']: match r['type']:

View file

@ -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} python ${coursebuilder} -s schema.yaml -m mod.cg.yaml -l de -f fields.yaml | pandoc ${target_flags} -o ${target_de}
${target_de_book}: ${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: clean:
rm -f ${targets} rm -f ${targets}

View file

@ -231,8 +231,8 @@ term:
en: "term" en: "term"
} }
template: template:
de: " ${value}\\. Semester" de: "{value}\\. Semester"
en: " ${value}\\. semester" en: "{value}\\. semester"
# #
# Häufigkeit des Angebots # Häufigkeit des Angebots