disable old processing code
This commit is contained in:
parent
1381c37500
commit
7c73d3b5f6
4 changed files with 89 additions and 93 deletions
|
@ -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()
|
||||||
|
|
|
@ -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']:
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue