Compare commits
No commits in common. "28378e3819cc8b0a6560a095906818031850ee51" and "1de0e13e45c36bdf487769ceca60fbdbe2950747" have entirely different histories.
28378e3819
...
1de0e13e45
6 changed files with 16 additions and 44 deletions
1
TODO.md
1
TODO.md
|
@ -5,4 +5,3 @@
|
|||
* [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 ...
|
|
@ -13,17 +13,18 @@ actual values are kept in YAML files in order to version them with git.
|
|||
from argparse import ArgumentParser
|
||||
import yaml
|
||||
import string
|
||||
import os,sys
|
||||
import os
|
||||
|
||||
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
|
||||
|
||||
|
@ -110,7 +111,7 @@ class CourseBuilder:
|
|||
return [k,', '.join(parts)]
|
||||
|
||||
|
||||
def process(self,meta,fields = [],lang = 'de',pagebreak = False,createTitle=False,header_level=1,template=None):
|
||||
def process(self,meta,fields = [],lang = 'de',pagebreak = False,createTitle=False,header_level=1):
|
||||
|
||||
table_items = []
|
||||
|
||||
|
@ -122,13 +123,8 @@ class CourseBuilder:
|
|||
case 'multinum' : table_items.append(self.process_multinum(meta,field,lang))
|
||||
case 'multikey': table_items.append(self.process_multikey(meta,field,lang))
|
||||
|
||||
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)
|
||||
mdg = MarkdownGenerator()
|
||||
mdg.generate_markdown(table_items,pagebreak,createTitle,header_level=header_level)
|
||||
|
||||
def process_book_section(self,section,lang='de'):
|
||||
pass
|
||||
|
@ -149,10 +145,7 @@ class CourseBuilder:
|
|||
mod_path = os.path.join(os.path.dirname(bookpath),m)
|
||||
|
||||
with open(mod_path) as fm:
|
||||
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)
|
||||
|
||||
|
||||
|
||||
|
@ -172,7 +165,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()
|
||||
|
@ -218,8 +211,7 @@ 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,template=args.template)
|
||||
cb.process(yaml.load(fm,Loader=yaml.Loader),fields=actual_fields,lang=args.lang,pagebreak=args.pagebreak,createTitle=args.title,header_level=args.level)
|
||||
else:
|
||||
parser.print_help()
|
||||
|
||||
|
|
|
@ -4,10 +4,11 @@ import textwrap,itertools
|
|||
|
||||
|
||||
class MarkdownGenerator:
|
||||
def __init__(self) -> None:
|
||||
pass
|
||||
|
||||
|
||||
@staticmethod
|
||||
def generate(ti,pagebreak = False,title = False,header_level = 1) -> str:
|
||||
def generate_markdown(self,ti,pagebreak = False,title = False,header_level = 1) -> str:
|
||||
|
||||
line_length = 128
|
||||
column_ratio= 0.28
|
||||
|
@ -15,9 +16,6 @@ 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')
|
||||
|
||||
|
@ -28,6 +26,7 @@ class MarkdownGenerator:
|
|||
#
|
||||
# this implements a Markdown Grid-Table
|
||||
#
|
||||
|
||||
for k,v in ti:
|
||||
|
||||
if v == None:
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
#!/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,22 +1,17 @@
|
|||
|
||||
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,5 +29,3 @@ book:
|
|||
- modules:
|
||||
- mod.cg.yaml
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue