repurpose title to make it configurable from outside
This commit is contained in:
parent
4fca7c7bae
commit
85abfeb743
4 changed files with 21 additions and 62 deletions
|
@ -20,7 +20,7 @@ import pandas as pd
|
|||
from tablegenerator import TableGenerator
|
||||
from markdowngenerator import MarkdownGenerator
|
||||
from templategenerator import TemplateGenerator
|
||||
from metagenerator import MetaGenerator
|
||||
from parser import Parser
|
||||
|
||||
class CourseBuilder:
|
||||
|
||||
|
@ -35,7 +35,7 @@ class CourseBuilder:
|
|||
parser.add_argument('-f','--fields',help="Fields to be used, the table will be build accordingly",action="extend", nargs="+", type=str)
|
||||
parser.add_argument('-s','--schema',help="using provided schema")
|
||||
parser.add_argument('-p','--pagebreak',action="store_true",help="add a pagebreak after each module")
|
||||
parser.add_argument('-t','--title',action="store_true",help="take first value in list as title")
|
||||
parser.add_argument('--title',type=str,default=None,help="template for title")
|
||||
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')
|
||||
|
@ -59,7 +59,7 @@ class CourseBuilder:
|
|||
# book mode with predefined setting from a book file
|
||||
if args.book and args.schema:
|
||||
|
||||
generator = MetaGenerator()
|
||||
generator = Parser()
|
||||
|
||||
with open(args.schema) as sf:
|
||||
generator.set_schema(yaml.load(sf,Loader=yaml.Loader))
|
||||
|
@ -115,18 +115,28 @@ class CourseBuilder:
|
|||
for m in args.meta:
|
||||
with open(m) as fm:
|
||||
|
||||
generator = MetaGenerator()
|
||||
generator = Parser()
|
||||
generator.set_schema(actual_schema)
|
||||
|
||||
meta = yaml.load(fm,Loader=yaml.Loader)
|
||||
|
||||
table_items = generator.process(meta=meta,fields=actual_fields,lang=args.lang)
|
||||
|
||||
# TODO - something more processable for Pandas?
|
||||
# return [ { name: Computergraphik }, keys = { name: Modulname } ]
|
||||
|
||||
# get the dataframe
|
||||
df = pd.DataFrame(table_items)
|
||||
|
||||
# use first column for
|
||||
df.columns = df.iloc[0]
|
||||
df = df[1:]
|
||||
|
||||
if args.title != None:
|
||||
print(args.title.format(df.columns[1]),'\n')
|
||||
|
||||
print(df.to_markdown(tablefmt='grid', index=False, maxcolwidths=[args.maxcol,None]))
|
||||
print('\n')
|
||||
print('\n') # always add a newline after the table
|
||||
|
||||
if args.pagebreak:
|
||||
print('\\pagebreak')
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import os,string,sys
|
||||
|
||||
class MetaGenerator:
|
||||
class Parser:
|
||||
|
||||
def __init__(self) -> None:
|
||||
self.__schema = None
|
||||
|
@ -110,45 +110,3 @@ class MetaGenerator:
|
|||
|
||||
# maybe return tableitems as np.Dataframe?
|
||||
return table_items
|
||||
|
||||
|
||||
|
||||
# if template != None:
|
||||
# # use template generator
|
||||
# TemplateGenerator.generate(table_items,pagebreak,createTitle,header_level=header_level)
|
||||
# pass
|
||||
# else:
|
||||
# # conventional MD mode
|
||||
# MarkdownGenerator.generate(table_items,pagebreak,createTitle,header_level=header_level)
|
||||
|
||||
# def process_book_section(self,section,lang='de'):
|
||||
# pass
|
||||
|
||||
# book mode
|
||||
# def process_book(self,book,bookpath,create_title,pagebreak,lang='de',header_level=2):
|
||||
|
||||
# actual_fields = []
|
||||
|
||||
# for bi in book['book']:
|
||||
# if 'fields' in bi:
|
||||
# actual_fields = bi['fields']
|
||||
# if 'sections' in bi:
|
||||
# for section in bi['sections']:
|
||||
# if 'text' in section:
|
||||
# print(section['text'][lang])
|
||||
# if 'modules' in section:
|
||||
# for m in section['modules']:
|
||||
# mod_path = os.path.join(os.path.dirname(bookpath),m)
|
||||
|
||||
# with open(mod_path) as fm:
|
||||
# try:
|
||||
# table_items = self.process(yaml.load(fm,Loader=yaml.Loader),fields=actual_fields,lang=lang,pagebreak=pagebreak,createTitle=create_title,header_level=header_level)
|
||||
|
||||
# print(table_items)
|
||||
|
||||
# except Exception as exc:
|
||||
# print(f'{type(exc).__name__} in {mod_path}: {exc}',file=sys.stderr)
|
||||
|
||||
|
||||
|
||||
|
|
@ -22,17 +22,8 @@ all: ${target_de} ${target_en}
|
|||
clean:
|
||||
rm ${target_de} ${target_en}
|
||||
|
||||
# debug-template:
|
||||
# python ${coursebuilder} -s schema.yaml -m mod.cg.yaml mod.interactsys.yaml -l de -f name credits goal content --template "$$name | $$credits"
|
||||
|
||||
# debug-markdown:
|
||||
# python ${coursebuilder} -s schema.yaml -m mod.cg.yaml mod.interactsys.yaml -l de -f name credits
|
||||
|
||||
# debug-book:
|
||||
# python ${coursebuilder} -s schema.yaml -b book.yaml -l de
|
||||
|
||||
debug:
|
||||
python ${coursebuilder} -s schema.yaml -m mod.cg.yaml mod.interactsys.yaml mod.test.yaml -l de -f name credits goal content | pandoc ${target_flags} -V lang:de -o ${target_de}
|
||||
python ${coursebuilder} -s schema.yaml -m mod.cg.yaml mod.interactsys.yaml mod.test.yaml -p --title "## {}" -l de -f name credits goal content | pandoc ${target_flags} -V lang:de -o ${target_de}
|
||||
|
||||
|
||||
.PHONY: clean
|
|
@ -83,11 +83,11 @@ content:
|
|||
# Es sind nur Werte aus der Prüfungsordung zugelassen
|
||||
#
|
||||
form-of-instruction:
|
||||
type: multikey
|
||||
label: {
|
||||
de: "Lehrform(en)",
|
||||
en: "form of instruction"
|
||||
}
|
||||
type: multikey
|
||||
keys: {
|
||||
'lecture' : {
|
||||
de: "Vorlesung",
|
||||
|
@ -188,8 +188,8 @@ credits:
|
|||
de: "Kreditpunkte und Gewichtung der Note in der Gesamtnote"
|
||||
}
|
||||
template:
|
||||
de: "${value}CP Gewichtung: ${value}CP von 120CP "
|
||||
en: "${value}CP weight: ${value} / 120 "
|
||||
de: "${value}CP, Gewichtung: ${value}CP von 120CP "
|
||||
en: "${value}CP, weight: ${value} / 120 "
|
||||
|
||||
|
||||
#
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue