intermediate version
This commit is contained in:
parent
6f51fbf76c
commit
28378e3819
6 changed files with 39 additions and 14 deletions
1
TODO.md
1
TODO.md
|
@ -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 ...
|
|
@ -17,14 +17,13 @@ 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
|
||||
|
@ -168,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()
|
||||
|
@ -214,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()
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
11
coursebuilder/templategenerator.py
Normal file
11
coursebuilder/templategenerator.py
Normal 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
|
|
@ -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
|
||||
|
||||
|
|
|
@ -29,3 +29,5 @@ book:
|
|||
- modules:
|
||||
- mod.cg.yaml
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue