diff --git a/TODO.md b/TODO.md index 610b7c8..484edcc 100644 --- a/TODO.md +++ b/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 ... \ No newline at end of file diff --git a/coursebuilder/__main__.py b/coursebuilder/__main__.py index 43f67db..2ce0fc5 100644 --- a/coursebuilder/__main__.py +++ b/coursebuilder/__main__.py @@ -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) + self.process(yaml.load(fm,Loader=yaml.Loader),fields=actual_fields,lang=lang,pagebreak=pagebreak,createTitle=create_title,header_level=header_level) @@ -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() diff --git a/coursebuilder/markdowngenerator.py b/coursebuilder/markdowngenerator.py index ad78b49..f7ff98a 100644 --- a/coursebuilder/markdowngenerator.py +++ b/coursebuilder/markdowngenerator.py @@ -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: diff --git a/coursebuilder/templategenerator.py b/coursebuilder/templategenerator.py deleted file mode 100644 index 0e7a23a..0000000 --- a/coursebuilder/templategenerator.py +++ /dev/null @@ -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 \ No newline at end of file diff --git a/test/simple/Makefile b/test/simple/Makefile index 02c04ef..8ea5c11 100644 --- a/test/simple/Makefile +++ b/test/simple/Makefile @@ -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 diff --git a/test/simple/book.yaml b/test/simple/book.yaml index f8544df..6cd1b46 100644 --- a/test/simple/book.yaml +++ b/test/simple/book.yaml @@ -29,5 +29,3 @@ book: - modules: - mod.cg.yaml - -