intermediate version

This commit is contained in:
Hartmut Seichter 2024-05-01 08:10:27 +02:00
parent 6f51fbf76c
commit 28378e3819
6 changed files with 39 additions and 14 deletions

View file

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

View file

@ -17,14 +17,13 @@ import os,sys
from tablegenerator import TableGenerator from tablegenerator import TableGenerator
from markdowngenerator import MarkdownGenerator from markdowngenerator import MarkdownGenerator
from templategenerator import TemplateGenerator
class CourseBuilder: class CourseBuilder:
def __init__(self) -> None: def __init__(self) -> None:
self.__schema = None self.__schema = None
def set_schema(self,schema = None): def set_schema(self,schema = None):
self.__schema = schema self.__schema = schema
@ -111,7 +110,7 @@ class CourseBuilder:
return [k,', '.join(parts)] 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 = [] table_items = []
@ -123,8 +122,13 @@ class CourseBuilder:
case 'multinum' : table_items.append(self.process_multinum(meta,field,lang)) case 'multinum' : table_items.append(self.process_multinum(meta,field,lang))
case 'multikey': table_items.append(self.process_multikey(meta,field,lang)) case 'multikey': table_items.append(self.process_multikey(meta,field,lang))
mdg = MarkdownGenerator() if template != None:
mdg.generate_markdown(table_items,pagebreak,createTitle,header_level=header_level) # 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'): def process_book_section(self,section,lang='de'):
pass pass
@ -168,7 +172,7 @@ def main():
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')
parser.add_argument('--template',type=str,default=None,help='defines a template to be used with fields')
# get arguments # get arguments
args = parser.parse_args() args = parser.parse_args()
@ -214,7 +218,8 @@ def main():
for m in args.meta: for m in args.meta:
with open(m) as fm: 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: else:
parser.print_help() parser.print_help()

View file

@ -4,11 +4,10 @@ import textwrap,itertools
class MarkdownGenerator: 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 line_length = 128
column_ratio= 0.28 column_ratio= 0.28
@ -16,6 +15,9 @@ class MarkdownGenerator:
h_len = int(line_length * column_ratio) h_len = int(line_length * column_ratio)
d_len = line_length-h_len d_len = line_length-h_len
#
# generate title (currently the first one)
#
if title: if title:
print('#' * header_level,ti[0][1],'\n') print('#' * header_level,ti[0][1],'\n')
@ -26,7 +28,6 @@ class MarkdownGenerator:
# #
# this implements a Markdown Grid-Table # this implements a Markdown Grid-Table
# #
for k,v in ti: for k,v in ti:
if v == None: 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: table.en.pdf:
@echo "creating English version ..." @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: table.de.pdf:
@echo "creating German version ..." @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 all: table.en.pdf table.de.pdf
clean: clean:
rm -f table.en.pdf table.de.pdf 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: 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: - modules:
- mod.cg.yaml - mod.cg.yaml