1*c8c342a6SMilanka Ringwald#!/usr/bin/env python3 2*c8c342a6SMilanka Ringwald 3*c8c342a6SMilanka Ringwaldimport os, sys, shutil, re, pickle, getopt 4*c8c342a6SMilanka Ringwaldfrom pathlib import Path 5*c8c342a6SMilanka Ringwald 6*c8c342a6SMilanka Ringwalddef writeCodeBlock(aout, code, references): 7*c8c342a6SMilanka Ringwald for function_name, url in references.items(): 8*c8c342a6SMilanka Ringwald html_link = '<a href="' + url + '">' + function_name + '</a>' 9*c8c342a6SMilanka Ringwald #print "before:" + code + "\n\n" 10*c8c342a6SMilanka Ringwald code = code.replace(function_name, html_link) 11*c8c342a6SMilanka Ringwald aout.write(code) 12*c8c342a6SMilanka Ringwald 13*c8c342a6SMilanka Ringwald 14*c8c342a6SMilanka Ringwalddef main(argv): 15*c8c342a6SMilanka Ringwald htmlfolder = "btstack/" 16*c8c342a6SMilanka Ringwald 17*c8c342a6SMilanka Ringwald cmd = 'html_postprocess_code_blocks.py [-o <htmlkfolder>]' 18*c8c342a6SMilanka Ringwald 19*c8c342a6SMilanka Ringwald try: 20*c8c342a6SMilanka Ringwald opts, args = getopt.getopt(argv,"o:",["ofolder="]) 21*c8c342a6SMilanka Ringwald except getopt.GetoptError: 22*c8c342a6SMilanka Ringwald print (cmd) 23*c8c342a6SMilanka Ringwald sys.exit(2) 24*c8c342a6SMilanka Ringwald for opt, arg in opts: 25*c8c342a6SMilanka Ringwald if opt == '-h': 26*c8c342a6SMilanka Ringwald print (cmd) 27*c8c342a6SMilanka Ringwald sys.exit() 28*c8c342a6SMilanka Ringwald elif opt in ("-o", "--ofolder"): 29*c8c342a6SMilanka Ringwald htmlfolder = arg 30*c8c342a6SMilanka Ringwald 31*c8c342a6SMilanka Ringwald html_path = htmlfolder + "examples/" 32*c8c342a6SMilanka Ringwald html_tmppath = htmlfolder + "examples/tmp/" 33*c8c342a6SMilanka Ringwald 34*c8c342a6SMilanka Ringwald html_in = html_path + "examples/index.html" 35*c8c342a6SMilanka Ringwald html_tmp = html_tmppath + "index.html" 36*c8c342a6SMilanka Ringwald references = pickle.load(open( "references.p", "rb" )) 37*c8c342a6SMilanka Ringwald 38*c8c342a6SMilanka Ringwald Path(html_tmppath).mkdir(parents=True, exist_ok=True) 39*c8c342a6SMilanka Ringwald 40*c8c342a6SMilanka Ringwald codeblock = 0 41*c8c342a6SMilanka Ringwald codeblock_end = 0 42*c8c342a6SMilanka Ringwald 43*c8c342a6SMilanka Ringwald with open(html_in, 'r') as fin: 44*c8c342a6SMilanka Ringwald with open(html_tmp, 'w') as fout: 45*c8c342a6SMilanka Ringwald for line in fin: 46*c8c342a6SMilanka Ringwald if not codeblock: 47*c8c342a6SMilanka Ringwald fout.write(line) 48*c8c342a6SMilanka Ringwald if re.match('.*<pre><code>.*',line): 49*c8c342a6SMilanka Ringwald codeblock = 1 50*c8c342a6SMilanka Ringwald continue 51*c8c342a6SMilanka Ringwald 52*c8c342a6SMilanka Ringwald writeCodeBlock(fout,line, references) 53*c8c342a6SMilanka Ringwald # check if codeblock ended 54*c8c342a6SMilanka Ringwald if re.match('.*</code></pre>.*',line): 55*c8c342a6SMilanka Ringwald codeblock = 0 56*c8c342a6SMilanka Ringwald 57*c8c342a6SMilanka Ringwald 58*c8c342a6SMilanka Ringwald shutil.copyfile(html_tmp, html_in) 59*c8c342a6SMilanka Ringwald shutil.rmtree(html_tmppath) 60*c8c342a6SMilanka Ringwald 61*c8c342a6SMilanka Ringwaldif __name__ == "__main__": 62*c8c342a6SMilanka Ringwald main(sys.argv[1:]) 63