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:
|
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
|
@staticmethod
|
||||||
def run():
|
def run():
|
||||||
|
|
||||||
|
@ -77,67 +116,17 @@ class CourseBuilder:
|
||||||
if 'text' in section:
|
if 'text' in section:
|
||||||
print(section['text'][args.lang])
|
print(section['text'][args.lang])
|
||||||
if 'modules' in section:
|
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:
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
|
args.fields = actual_fields
|
||||||
|
|
||||||
|
# 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
|
# verbose command line mode
|
||||||
elif args.schema and args.meta and len(args.fields) > 0:
|
elif args.schema:
|
||||||
|
CourseBuilder.generate(args=args)
|
||||||
# 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)
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,9 @@
|
||||||
build_dir := build
|
build_dir := build
|
||||||
target_en := ${build_dir}/table.en.pdf
|
target_en := ${build_dir}/table.en.pdf
|
||||||
target_de := ${build_dir}/table.de.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
|
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
|
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}
|
# | 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
|
debug-book:
|
||||||
# | pandoc ${target_flags} -V lang:de -o ${target_de}
|
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
|
.PHONY: clean
|
Loading…
Add table
Add a link
Reference in a new issue