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)
|
* [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 ...
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
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:
|
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
|
||||||
|
|
||||||
|
|
|
@ -29,3 +29,5 @@ book:
|
||||||
- modules:
|
- modules:
|
||||||
- mod.cg.yaml
|
- mod.cg.yaml
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue