From 28378e3819cc8b0a6560a095906818031850ee51 Mon Sep 17 00:00:00 2001
From: Hartmut Seichter <hartmut@gmail.com>
Date: Wed, 1 May 2024 08:10:27 +0200
Subject: [PATCH] intermediate version

---
 TODO.md                            |  1 +
 coursebuilder/__main__.py          | 19 ++++++++++++-------
 coursebuilder/markdowngenerator.py |  9 +++++----
 coursebuilder/templategenerator.py | 11 +++++++++++
 test/simple/Makefile               | 11 ++++++++---
 test/simple/book.yaml              |  2 ++
 6 files changed, 39 insertions(+), 14 deletions(-)
 create mode 100644 coursebuilder/templategenerator.py

diff --git a/TODO.md b/TODO.md
index 484edcc..610b7c8 100644
--- a/TODO.md
+++ b/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 ... 
\ No newline at end of file
diff --git a/coursebuilder/__main__.py b/coursebuilder/__main__.py
index f9cf2b1..43f67db 100644
--- a/coursebuilder/__main__.py
+++ b/coursebuilder/__main__.py
@@ -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()
 
diff --git a/coursebuilder/markdowngenerator.py b/coursebuilder/markdowngenerator.py
index f7ff98a..ad78b49 100644
--- a/coursebuilder/markdowngenerator.py
+++ b/coursebuilder/markdowngenerator.py
@@ -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:
diff --git a/coursebuilder/templategenerator.py b/coursebuilder/templategenerator.py
new file mode 100644
index 0000000..0e7a23a
--- /dev/null
+++ b/coursebuilder/templategenerator.py
@@ -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
\ No newline at end of file
diff --git a/test/simple/Makefile b/test/simple/Makefile
index 8ea5c11..02c04ef 100644
--- a/test/simple/Makefile
+++ b/test/simple/Makefile
@@ -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
 
diff --git a/test/simple/book.yaml b/test/simple/book.yaml
index 6cd1b46..f8544df 100644
--- a/test/simple/book.yaml
+++ b/test/simple/book.yaml
@@ -29,3 +29,5 @@ book:
     - modules: 
         - mod.cg.yaml
 
+
+