from mako.template import Template
from mako.lookup import TemplateLookup
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('indir')
parser.add_argument('--base', '-b', default='base.html', nargs='?')
parser.add_argument('--odir', '-o')
args = parser.parse_args()
if args.odir is None:
args.odir = args.indir
mylookup = TemplateLookup(directories='templates')
template = mylookup.get_template('from-markdown.html')
import glob
import os
import os.path
import lxml.html
items = []
counter = 0
for file in glob.glob1(args.indir, '*.md'):
oname = os.path.join(args.odir, '%s.html' % file.rpartition('.')[0])
with open(os.path.join(args.indir, file)) as f:
out = template.render(content=f.read(), base=args.base)
with open(oname, 'wb') as of:
of.write(out.encode('utf-8'))
counter += 1
items.append({})
htmldoc = lxml.html.fromstring(out)
desc_el = htmldoc.xpath('//div[contains(@class,"container") and contains(@class, "has_description")]/p[1]')
print(desc_el)
desc_el = '' if not desc_el else desc_el[0]
title_el = htmldoc.xpath('//h1 | //h2 | //h3 | //h4 | //h4 | //h6')
title_el = '' if not title_el else title_el[0]
items[-1].update(
link=oname,
counter = counter,
title = oname if title_el is '' else title_el.text_content().strip(),
description = desc_el if desc_el is '' else lxml.etree.tostring(desc_el).decode('utf-8')
)
index_template = mylookup.get_template('index.html')
index = index_template.render(items=items, base=args.base)
with open(os.path.join(args.odir, 'index.html'), 'wb') as of:
of.write(index.encode('utf-8'))