# coding=UTF-8
from __future__ import print_function
import json, sys
import os.path

def readin(path, func=bytes, orelse=None):
    if os.path.exists(path):
        with open(path, 'rb') as fin:
            return func(fin.read())
    else:
        return orelse

if __name__ == '__main__':
    header_bin = readin('src/header.md')
    footer_bin = readin('src/footer.md')

    for lab_name in ('lab'+str(x) for x in xrange(7, start=1)):
        dist_lp = 'dist/' + lab_name + '/'
        src_md = 'src/' + lab_name + '.md'

        if not os.path.exists(src_md):
            print('Aborting, no src file')
            sys.exit()

        # Make directories
        os.system('mkdir -p '+dist_lp)

        # Load data
        data = readin('src/'+lab_name+'.json', json.load, orelse=[{}])

        # Load text
        lab = readin(src_md, lambda x: x.decode('utf8'))

        # Swap placholders
        for ex_no, d in enumerate(data, start=1):
            plab = lab
            d['lp'] = unicode(ex_no)

            for k, v in d.iteritems():
                plab = plab.replace(u'$%s$' % (k, ), v)

            with open(dist_lp+'%s.md' % (ex_no, ), 'wb') as labout:
                labout.write(header_bin)
                labout.write(plab.encode('utf8'))
                labout.write(footer_bin)

            os.system(('pandoc %s%s.md -s -o %s%s.pdf') % (dist_lp, ex_no, dist_lp, ex_no))