#!/usr/bin/python3
import os
import os.path
import sys
#from jinja2 import Environment, PackageLoader, Template, FileSystemLoader
from jinja2 import Environment, PackageLoader, Template, FileSystemLoader
import mistune
#global name for templates
article = {}#
#class TocMixin():
# """TOC mixin for Renderer, mix this with Renderer::#
# class TocRenderer(TocMixin, Renderer):
# pass#
# toc = TocRenderer()
# md = mistune.Markdown(renderer=toc)#
# # required in this order
# toc.reset_toc() # initial the status
# md.parse(text) # parse for headers
# toc.render_toc(level=3) # render TOC HTML
# """#
# def reset_toc(self):
# self.toc_tree = []
# self.toc_count = 0
# self.title = None
# self.img_count = -1#
# def header(self, text, level, raw=None):
# rv = ""
# if level != 1:
# rv = '%s\n' % (
# level, self.toc_count, text, level
# )
# else:
# self.title = text
# self.toc_tree.append((self.toc_count, text, level, raw))
# self.toc_count += 1
# return rv#
# #Lets do previev image
# def image(self, src, title, alt_text):
# prev_img = src.split(".")
# prev_img = prev_img[0]+"_prev."+prev_img[1]
# self.img_count += 1
# return ""#
# def render_toc(self, level=3):
# """Render TOC to HTML.#
# :param level: render toc to the given level
# """
# return ''.join(self._iter_toc(level))#
# def _iter_toc(self, level):
# first_level = None
# last_level = None
# cnt = 0#
# if (self.title != None):
# yield '
%s
\n' % (self.title)#
# yield '\n'#
# for toc in self.toc_tree:
# index, text, l, raw = toc
# index = cnt
# #
# if l > level:
# # ignore this level
# continue#
# if first_level is None:
# # based on first level
# first_level = l
# last_level = l
# #yield '- %s' % (cnt, text)
# yield ''
# elif last_level == l:
# yield '
\n- %s' % (cnt, text)
# elif last_level == l - 1:
# last_level = l
# yield '
\n- %s' % (cnt, text)
# elif last_level > l:
# # close indention
# yield '
'
# while last_level > l:
# yield '
\n \n'
# last_level -= 1
# yield '- %s' % (cnt, text)
# cnt = cnt + 1#
# # close tags
# yield '
\n'
# while last_level > first_level:
# yield '
\n\n'
# last_level -= 1#
# yield '\n'
# self.toc_count = 0#
#class TocRenderer(TocMixin, mistune.Renderer):
# pass
################################################################################
#get first tags and use them to configure some bits
def get_tags(data):
text = ""
tag_section = True
for line in data.split("\n"):
if tag_section:
tag = line.split(":")
l = len(tag)
if l != 2:
tag_section = False
text += line+"\n"
else:
article[tag[0]] = tag[1]
else:
text += line+"\n"
return text
################################################################################
#check if there is input file
if len(sys.argv) < 2:
print("ERROR: Exit . Need more arguments")
sys.exit(0)
md_fn = sys.argv[1]
#template loader
loader = FileSystemLoader( "/home/fam/downloads/source/repos/md-site/src/templ" )
templ_env = Environment( loader = loader )#
t = templ_env.get_template("main.thtml")#
##get md file
f = open( md_fn, "r" )
data = f.read()
data = get_tags(data)
#toc = TocRenderer()
## Create AST rendered
## Create AST -> Markdown renderer
## Mistune generate MTL
md_rend = mistune.html(data)
#print t.render( article=article, block = md_rend )
print(t.render( article=article, block = md_rend ))
f.close()