Compare commits

..

2 commits

Author SHA1 Message Date
Hartmut Seichter
28378e3819 intermediate version 2024-05-01 08:10:27 +02:00
Hartmut Seichter
6f51fbf76c adding a proper exception handler to find actual problems in external files 2024-04-25 19:35:13 +02:00
6 changed files with 44 additions and 16 deletions

View file

@ -5,3 +5,4 @@
* [x] fix overlong table cells (pandoc longtable only deals with overlong tables but not cells)
* [ ] add a book mode for mixing input and headers (# Blah -m mod.cg.yaml)
* [ ] table generator
* [ ] overlay of compulsory with other modes ...

View file

@ -13,18 +13,17 @@ actual values are kept in YAML files in order to version them with git.
from argparse import ArgumentParser
import yaml
import string
import os
import os,sys
from tablegenerator import TableGenerator
from markdowngenerator import MarkdownGenerator
from templategenerator import TemplateGenerator
class CourseBuilder:
def __init__(self) -> None:
self.__schema = None
def set_schema(self,schema = None):
self.__schema = schema
@ -111,7 +110,7 @@ class CourseBuilder:
return [k,', '.join(parts)]
def process(self,meta,fields = [],lang = 'de',pagebreak = False,createTitle=False,header_level=1):
def process(self,meta,fields = [],lang = 'de',pagebreak = False,createTitle=False,header_level=1,template=None):
table_items = []
@ -123,8 +122,13 @@ class CourseBuilder:
case 'multinum' : table_items.append(self.process_multinum(meta,field,lang))
case 'multikey': table_items.append(self.process_multikey(meta,field,lang))
mdg = MarkdownGenerator()
mdg.generate_markdown(table_items,pagebreak,createTitle,header_level=header_level)
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
@ -145,7 +149,10 @@ class CourseBuilder:
mod_path = os.path.join(os.path.dirname(bookpath),m)
with open(mod_path) as fm:
self.process(yaml.load(fm,Loader=yaml.Loader),fields=actual_fields,lang=lang,pagebreak=pagebreak,createTitle=create_title,header_level=header_level)
try:
self.process(yaml.load(fm,Loader=yaml.Loader),fields=actual_fields,lang=lang,pagebreak=pagebreak,createTitle=create_title,header_level=header_level)
except:
print(f'Error in {mod_path}',file=sys.stderr)
@ -165,7 +172,7 @@ def main():
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')
parser.add_argument('--template',type=str,default=None,help='defines a template to be used with fields')
# get arguments
args = parser.parse_args()
@ -211,7 +218,8 @@ def main():
for m in args.meta:
with open(m) as fm:
cb.process(yaml.load(fm,Loader=yaml.Loader),fields=actual_fields,lang=args.lang,pagebreak=args.pagebreak,createTitle=args.title,header_level=args.level)
cb.process(yaml.load(fm,Loader=yaml.Loader),fields=actual_fields,lang=args.lang,pagebreak=args.pagebreak,createTitle=args.title,header_level=args.level,template=args.template)
else:
parser.print_help()

View file

@ -4,11 +4,10 @@ import textwrap,itertools
class MarkdownGenerator:
def __init__(self) -> None:
pass
def generate_markdown(self,ti,pagebreak = False,title = False,header_level = 1) -> str:
@staticmethod
def generate(ti,pagebreak = False,title = False,header_level = 1) -> str:
line_length = 128
column_ratio= 0.28
@ -16,6 +15,9 @@ class MarkdownGenerator:
h_len = int(line_length * column_ratio)
d_len = line_length-h_len
#
# generate title (currently the first one)
#
if title:
print('#' * header_level,ti[0][1],'\n')
@ -26,7 +28,6 @@ class MarkdownGenerator:
#
# this implements a Markdown Grid-Table
#
for k,v in ti:
if v == None:

View file

@ -0,0 +1,11 @@
#!/usr/bin/env python
import textwrap,itertools
class TemplateGenerator:
@staticmethod
def generate(ti,pagebreak = False,title = False,header_level = 1) -> str:
print(ti)
pass

View file

@ -1,17 +1,22 @@
coursebuilder := ../../coursebuilder
table.en.pdf:
@echo "creating English version ..."
python ../../coursebuilder -s schema.yaml -m mod.cg.yaml -l en -f fields.yaml | pandoc --template pandoc-template/eisvogel.latex -o table.en.pdf
python ${coursebuilder} -s schema.yaml -m mod.cg.yaml -l en -f fields.yaml | pandoc --template pandoc-template/eisvogel.latex -o table.en.pdf
table.de.pdf:
@echo "creating German version ..."
python ../../coursebuilder -s schema.yaml -m mod.cg.yaml -l de -f fields.yaml | pandoc --template pandoc-template/eisvogel.latex -o table.de.pdf
python ${coursebuilder} -s schema.yaml -m mod.cg.yaml -l de -f fields.yaml | pandoc --template pandoc-template/eisvogel.latex -o table.de.pdf
all: table.en.pdf table.de.pdf
clean:
rm -f table.en.pdf table.de.pdf
debug-list:
python ${coursebuilder} -s schema.yaml -m mod.cg.yaml mod.interactsys.yaml -l de -f name credits --template ""
debug:
python ../../coursebuilder -s schema.yaml -m mod.cg.yaml -l de -f fields.yaml
python ${coursebuilder} -s schema.yaml -m mod.cg.yaml -l de -f fields.yaml

View file

@ -29,3 +29,5 @@ book:
- modules:
- mod.cg.yaml