diff options
Diffstat (limited to 'src/md.py')
-rwxr-xr-x | src/md.py | 227 |
1 files changed, 116 insertions, 111 deletions
@@ -1,112 +1,114 @@ -#!/usr/bin/python2 +#!/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 = '<h%d id="toc-%d">%s</h%d>\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 "<a href="+src+"><img src=\""+prev_img+"\" alt=\""+alt_text+"\"></a>" - - 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 '<h1>%s</h1>\n' % (self.title) - - yield '<ul id="table-of-content">\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 '<li><a href="#toc-%d">%s</a>' % (cnt, text) - yield '' - elif last_level == l: - yield '</li>\n<li><a href="#toc-%d">%s</a>' % (cnt, text) - elif last_level == l - 1: - last_level = l - yield '<ul>\n<li><a href="#toc-%d">%s</a>' % (cnt, text) - elif last_level > l: - # close indention - yield '</li>' - while last_level > l: - yield '</ul>\n</li>\n' - last_level -= 1 - yield '<li><a href="#toc-%d">%s</a>' % (cnt, text) - cnt = cnt + 1 - - # close tags - yield '</li>\n' - while last_level > first_level: - yield '</ul>\n<!--</li>-->\n' - last_level -= 1 - - yield '</ul>\n' - self.toc_count = 0 - -class TocRenderer(TocMixin, mistune.Renderer): - pass +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 = '<h%d id="toc-%d">%s</h%d>\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 "<a href="+src+"><img src=\""+prev_img+"\" alt=\""+alt_text+"\"></a>"# + +# 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 '<h1>%s</h1>\n' % (self.title)# + +# yield '<ul id="table-of-content">\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 '<li><a href="#toc-%d">%s</a>' % (cnt, text) +# yield '' +# elif last_level == l: +# yield '</li>\n<li><a href="#toc-%d">%s</a>' % (cnt, text) +# elif last_level == l - 1: +# last_level = l +# yield '<ul>\n<li><a href="#toc-%d">%s</a>' % (cnt, text) +# elif last_level > l: +# # close indention +# yield '</li>' +# while last_level > l: +# yield '</ul>\n</li>\n' +# last_level -= 1 +# yield '<li><a href="#toc-%d">%s</a>' % (cnt, text) +# cnt = cnt + 1# + +# # close tags +# yield '</li>\n' +# while last_level > first_level: +# yield '</ul>\n<!--</li>-->\n' +# last_level -= 1# + +# yield '</ul>\n' +# self.toc_count = 0# + +#class TocRenderer(TocMixin, mistune.Renderer): +# pass ################################################################################ #get first tags and use them to configure some bits @@ -129,27 +131,30 @@ def get_tags(data): ################################################################################ #check if there is input file if len(sys.argv) < 2: - print "Need more arguments" + 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 ) +templ_env = Environment( loader = loader )# -t = templ_env.get_template("main.thtml") +t = templ_env.get_template("main.thtml")# -#get md file +##get md file f = open( md_fn, "r" ) data = f.read() data = get_tags(data) -toc = TocRenderer() -md = mistune.Markdown(rule=True,renderer=toc) +#toc = TocRenderer() +## Create AST rendered + +## Create AST -> Markdown renderer + +## Mistune generate MTL +md_rend = mistune.html(data) -toc.reset_toc() -md.parse(data) -md_rend_toc = toc.render_toc(level=3) -md_rend = md_rend_toc + md.render( data ) +#print t.render( article=article, block = md_rend ) +print(t.render( article=article, block = md_rend )) -print t.render( article=article, block = md_rend )
\ No newline at end of file +f.close()
\ No newline at end of file |