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 tablegenerator import TableGenerator
|
||||||
from markdowngenerator import MarkdownGenerator
|
from markdowngenerator import MarkdownGenerator
|
||||||
from templategenerator import TemplateGenerator
|
from templategenerator import TemplateGenerator
|
||||||
from metagenerator import MetaGenerator
|
from parser import Parser
|
||||||
|
|
||||||
class CourseBuilder:
|
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('-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('-s','--schema',help="using provided schema")
|
||||||
parser.add_argument('-p','--pagebreak',action="store_true",help="add a pagebreak after each module")
|
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('-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('--level',type=int,default=1,help="level of header tags")
|
||||||
parser.add_argument('--table-gen',type=str,default=None,help='runs table generator')
|
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
|
# book mode with predefined setting from a book file
|
||||||
if args.book and args.schema:
|
if args.book and args.schema:
|
||||||
|
|
||||||
generator = MetaGenerator()
|
generator = Parser()
|
||||||
|
|
||||||
with open(args.schema) as sf:
|
with open(args.schema) as sf:
|
||||||
generator.set_schema(yaml.load(sf,Loader=yaml.Loader))
|
generator.set_schema(yaml.load(sf,Loader=yaml.Loader))
|
||||||
|
@ -115,18 +115,28 @@ class CourseBuilder:
|
||||||
for m in args.meta:
|
for m in args.meta:
|
||||||
with open(m) as fm:
|
with open(m) as fm:
|
||||||
|
|
||||||
generator = MetaGenerator()
|
generator = Parser()
|
||||||
generator.set_schema(actual_schema)
|
generator.set_schema(actual_schema)
|
||||||
|
|
||||||
meta = yaml.load(fm,Loader=yaml.Loader)
|
meta = yaml.load(fm,Loader=yaml.Loader)
|
||||||
|
|
||||||
table_items = generator.process(meta=meta,fields=actual_fields,lang=args.lang)
|
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)
|
df = pd.DataFrame(table_items)
|
||||||
|
|
||||||
|
# use first column for
|
||||||
df.columns = df.iloc[0]
|
df.columns = df.iloc[0]
|
||||||
df = df[1:]
|
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(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:
|
if args.pagebreak:
|
||||||
print('\\pagebreak')
|
print('\\pagebreak')
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import os,string,sys
|
import os,string,sys
|
||||||
|
|
||||||
class MetaGenerator:
|
class Parser:
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.__schema = None
|
self.__schema = None
|
||||||
|
@ -110,45 +110,3 @@ class MetaGenerator:
|
||||||
|
|
||||||
# maybe return tableitems as np.Dataframe?
|
# maybe return tableitems as np.Dataframe?
|
||||||
return table_items
|
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:
|
clean:
|
||||||
rm ${target_de} ${target_en}
|
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:
|
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
|
.PHONY: clean
|
|
@ -83,11 +83,11 @@ content:
|
||||||
# Es sind nur Werte aus der Prüfungsordung zugelassen
|
# Es sind nur Werte aus der Prüfungsordung zugelassen
|
||||||
#
|
#
|
||||||
form-of-instruction:
|
form-of-instruction:
|
||||||
|
type: multikey
|
||||||
label: {
|
label: {
|
||||||
de: "Lehrform(en)",
|
de: "Lehrform(en)",
|
||||||
en: "form of instruction"
|
en: "form of instruction"
|
||||||
}
|
}
|
||||||
type: multikey
|
|
||||||
keys: {
|
keys: {
|
||||||
'lecture' : {
|
'lecture' : {
|
||||||
de: "Vorlesung",
|
de: "Vorlesung",
|
||||||
|
@ -188,8 +188,8 @@ credits:
|
||||||
de: "Kreditpunkte und Gewichtung der Note in der Gesamtnote"
|
de: "Kreditpunkte und Gewichtung der Note in der Gesamtnote"
|
||||||
}
|
}
|
||||||
template:
|
template:
|
||||||
de: "${value}CP Gewichtung: ${value}CP von 120CP "
|
de: "${value}CP, Gewichtung: ${value}CP von 120CP "
|
||||||
en: "${value}CP weight: ${value} / 120 "
|
en: "${value}CP, weight: ${value} / 120 "
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue