final refactor for book mode
This commit is contained in:
parent
df1cff80d8
commit
52c3ab5c37
2 changed files with 52 additions and 62 deletions
|
@ -22,6 +22,45 @@ from converter import Converter
|
|||
|
||||
class CourseBuilder:
|
||||
|
||||
@staticmethod
|
||||
def generate(args):
|
||||
if args.schema and args.meta and len(args.fields) > 0:
|
||||
|
||||
# get actual fields
|
||||
actual_fields = []
|
||||
|
||||
# use a file instead of list
|
||||
if os.path.isfile(args.fields[0]):
|
||||
with open(args.fields[0]) as ff:
|
||||
actual_fields = yaml.load(ff,Loader=yaml.Loader)['fields']
|
||||
else:
|
||||
actual_fields = args.fields
|
||||
|
||||
|
||||
# get schema
|
||||
actual_schema = None
|
||||
with open(args.schema) as f:
|
||||
actual_schema = yaml.load(f,Loader=yaml.Loader)
|
||||
|
||||
# iterate through meta files
|
||||
for m in args.meta:
|
||||
with open(m) as fm:
|
||||
|
||||
generator = Converter()
|
||||
generator.set_schema(actual_schema)
|
||||
|
||||
meta = yaml.load(fm,Loader=yaml.Loader)
|
||||
|
||||
table_items = generator.process(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.maxcol)
|
||||
else:
|
||||
MarkdownGenerator.generate_table(table_items=table_items,add_pagebreak=args.pagebreak,title_template=args.title,first_colwidth=args.maxcol)
|
||||
|
||||
|
||||
# MarkdownGenerator.generate(table_items,pagebreak=args.pagebreak,title=args.title,header_level=args.level)
|
||||
|
||||
@staticmethod
|
||||
def run():
|
||||
|
||||
|
@ -77,67 +116,17 @@ class CourseBuilder:
|
|||
if 'text' in section:
|
||||
print(section['text'][args.lang])
|
||||
if 'modules' in section:
|
||||
for m in section['modules']:
|
||||
mod_path = os.path.join(os.path.dirname(book_path),m)
|
||||
|
||||
with open(mod_path) as fm:
|
||||
try:
|
||||
args.fields = actual_fields
|
||||
|
||||
table_items = generator.process(yaml.load(fm,Loader=yaml.Loader),fields=actual_fields,lang=args.lang,pagebreak=args.pagebreak,createTitle=args.title,header_level=args.level)
|
||||
|
||||
MarkdownGenerator.generate(table_items,pagebreak=args.pagebreak,title=args.title,header_level=args.level)
|
||||
|
||||
except Exception as exc:
|
||||
print(f'{type(exc).__name__} in {mod_path}: {exc}',file=sys.stderr)
|
||||
# expand filenames to be relative to the book
|
||||
args.meta = [os.path.join(os.path.dirname(book_path),mod_path) for mod_path in section['modules']]
|
||||
|
||||
CourseBuilder.generate(args=args)
|
||||
|
||||
# verbose command line mode
|
||||
elif args.schema and args.meta and len(args.fields) > 0:
|
||||
|
||||
# get actual fields
|
||||
actual_fields = []
|
||||
|
||||
# use a file instead of list
|
||||
if os.path.isfile(args.fields[0]):
|
||||
with open(args.fields[0]) as ff:
|
||||
actual_fields = yaml.load(ff,Loader=yaml.Loader)['fields']
|
||||
else:
|
||||
actual_fields = args.fields
|
||||
|
||||
|
||||
# get schema
|
||||
actual_schema = None
|
||||
with open(args.schema) as f:
|
||||
actual_schema = yaml.load(f,Loader=yaml.Loader)
|
||||
|
||||
# iterate through meta files
|
||||
for m in args.meta:
|
||||
with open(m) as fm:
|
||||
|
||||
generator = Converter()
|
||||
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?
|
||||
draft = [
|
||||
{ 'name' : 'Modulname', 'lang' : 'de' },
|
||||
{ 'credits' : '5 ECTS' },
|
||||
]
|
||||
|
||||
draft_2 = {
|
||||
}
|
||||
|
||||
if args.legacy:
|
||||
MarkdownGenerator.generate_table_legacy(table_items=table_items,add_pagebreak=args.pagebreak,title_template=args.title,first_colwidth=args.maxcol)
|
||||
else:
|
||||
MarkdownGenerator.generate_table(table_items=table_items,add_pagebreak=args.pagebreak,title_template=args.title,first_colwidth=args.maxcol)
|
||||
|
||||
|
||||
# MarkdownGenerator.generate(table_items,pagebreak=args.pagebreak,title=args.title,header_level=args.level)
|
||||
|
||||
elif args.schema:
|
||||
CourseBuilder.generate(args=args)
|
||||
else:
|
||||
parser.print_help()
|
||||
|
||||
|
|
|
@ -2,8 +2,9 @@
|
|||
build_dir := build
|
||||
target_en := ${build_dir}/table.en.pdf
|
||||
target_de := ${build_dir}/table.de.pdf
|
||||
target_de_book := ${build_dir}/curricullum.de.pdf
|
||||
|
||||
targets := ${target_de} ${target_en}
|
||||
targets := ${target_de} ${target_en} ${target_de_book}
|
||||
|
||||
target_flags := --template pandoc-template/eisvogel.latex
|
||||
|
||||
|
@ -29,9 +30,9 @@ debug:
|
|||
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}
|
||||
|
||||
debug-legacy:
|
||||
python ${coursebuilder} -s schema.yaml -m mod.cg.yaml mod.interactsys.yaml mod.test.yaml -p --legacy --title "## {}" -l de -f name credits goal content
|
||||
# | pandoc ${target_flags} -V lang:de -o ${target_de}
|
||||
|
||||
debug-book:
|
||||
python ${coursebuilder} -s schema.yaml -b book.yaml -p --title "### {}" -l de --legacy | pandoc ${target_flags} -V lang:de -o ${target_de_book}
|
||||
|
||||
|
||||
.PHONY: clean
|
Loading…
Add table
Add a link
Reference in a new issue