No longer runs markdown twice to make printme.html.
Instead uses empty spans to mark page breaks and then replaces them.
This commit is contained in:
parent
a769a38dff
commit
f7fbbd5fe4
|
@ -15,6 +15,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
|
||||||
|
|
||||||
![Main Assembly](assemblies/main_assembled.png)
|
![Main Assembly](assemblies/main_assembled.png)
|
||||||
|
|
||||||
|
<span></span>
|
||||||
|
|
||||||
---
|
---
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
@ -24,6 +25,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
|
||||||
1. [Mains In Assembly](#mains_in_assembly)
|
1. [Mains In Assembly](#mains_in_assembly)
|
||||||
1. [Main Assembly](#main_assembly)
|
1. [Main Assembly](#main_assembly)
|
||||||
|
|
||||||
|
<span></span>
|
||||||
[Top](#TOP)
|
[Top](#TOP)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -54,6 +56,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
|
||||||
| 1 | . | . | . | 1 | socket_box.stl |
|
| 1 | . | . | . | 1 | socket_box.stl |
|
||||||
| 1 | 4 | . | . | 5 | Total 3D printed parts count |
|
| 1 | 4 | . | . | 5 | Total 3D printed parts count |
|
||||||
|
|
||||||
|
<span></span>
|
||||||
[Top](#TOP)
|
[Top](#TOP)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -81,6 +84,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
|
||||||
|
|
||||||
![base_assembled](assemblies/base_assembled.png)
|
![base_assembled](assemblies/base_assembled.png)
|
||||||
|
|
||||||
|
<span></span>
|
||||||
[Top](#TOP)
|
[Top](#TOP)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -117,6 +121,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
|
||||||
|
|
||||||
![feet_assembled](assemblies/feet_assembled.png)
|
![feet_assembled](assemblies/feet_assembled.png)
|
||||||
|
|
||||||
|
<span></span>
|
||||||
[Top](#TOP)
|
[Top](#TOP)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -156,6 +161,7 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
|
||||||
|
|
||||||
![mains_in_assembled](assemblies/mains_in_assembled.png)
|
![mains_in_assembled](assemblies/mains_in_assembled.png)
|
||||||
|
|
||||||
|
<span></span>
|
||||||
[Top](#TOP)
|
[Top](#TOP)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -199,4 +205,5 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
|
||||||
|
|
||||||
![main_assembled](assemblies/main_assembled.png)
|
![main_assembled](assemblies/main_assembled.png)
|
||||||
|
|
||||||
|
<span></span>
|
||||||
[Top](#TOP)
|
[Top](#TOP)
|
||||||
|
|
380
scripts/views.py
380
scripts/views.py
|
@ -79,15 +79,12 @@ def bom_to_assemblies(bom_dir, bounds_map):
|
||||||
flat_bom = flat_bom[:-1]
|
flat_bom = flat_bom[:-1]
|
||||||
return [assembly["name"] for assembly in flat_bom]
|
return [assembly["name"] for assembly in flat_bom]
|
||||||
|
|
||||||
def eop(print_mode, doc_file, last = False, first = False):
|
def eop(doc_file, last = False, first = False):
|
||||||
if print_mode:
|
print('<span></span>', file = doc_file) # An invisable marker for page breaks because markdown takes much longer if the document contains a div
|
||||||
if not last:
|
if not first:
|
||||||
print('\n<div style="page-break-after: always;"></div>', file = doc_file)
|
print('[Top](#TOP)', file = doc_file)
|
||||||
else:
|
if not last:
|
||||||
if not first:
|
print("\n---", file = doc_file)
|
||||||
print('[Top](#TOP)', file = doc_file)
|
|
||||||
if not last:
|
|
||||||
print("\n---", file = doc_file)
|
|
||||||
|
|
||||||
def pad(s, before, after = 0):
|
def pad(s, before, after = 0):
|
||||||
return ' ' * before + str(s) + ' ' * after
|
return ' ' * before + str(s) + ' ' * after
|
||||||
|
@ -206,189 +203,206 @@ def views(target, do_assemblies = None):
|
||||||
#
|
#
|
||||||
# Build the document
|
# Build the document
|
||||||
#
|
#
|
||||||
for print_mode in [True, False]:
|
doc_name = top_dir + "readme.md"
|
||||||
doc_name = top_dir + "readme.md"
|
with open(doc_name, "wt") as doc_file:
|
||||||
with open(doc_name, "wt") as doc_file:
|
#
|
||||||
#
|
# Title, description and picture
|
||||||
# Title, description and picture
|
#
|
||||||
#
|
project = ' '.join(word[0].upper() + word[1:] for word in os.path.basename(os.getcwd()).split('_'))
|
||||||
project = ' '.join(word[0].upper() + word[1:] for word in os.path.basename(os.getcwd()).split('_'))
|
print('<a name="TOP"></a>', file = doc_file)
|
||||||
print('<a name="TOP"></a>', file = doc_file)
|
print('# %s' % project, file = doc_file)
|
||||||
print('# %s' % project, file = doc_file)
|
main_file = bom.find_scad_file('main_assembly')
|
||||||
main_file = bom.find_scad_file('main_assembly')
|
if not main_file:
|
||||||
if not main_file:
|
raise Exception("can't find source for main_assembly")
|
||||||
raise Exception("can't find source for main_assembly")
|
text = blurb.scrape_blurb(source_dir + '/' + main_file)
|
||||||
text = blurb.scrape_blurb(source_dir + '/' + main_file)
|
blurbs = blurb.split_blurb(text)
|
||||||
blurbs = blurb.split_blurb(text)
|
if len(text):
|
||||||
if len(text):
|
print(blurbs[0], file = doc_file)
|
||||||
print(blurbs[0], file = doc_file)
|
else:
|
||||||
else:
|
print(Fore.MAGENTA + "Missing project description" + Fore.WHITE)
|
||||||
if print_mode:
|
#
|
||||||
print(Fore.MAGENTA + "Missing project description" + Fore.WHITE)
|
# Only add the image if the first blurb section doesn't contain one.
|
||||||
#
|
#
|
||||||
# Only add the image if the first blurb section doesn't contain one.
|
if not re.search(r'\!\[.*\]\(.*\)', blurbs[0], re.MULTILINE):
|
||||||
#
|
print('![Main Assembly](assemblies/%s.png)\n' % flat_bom[-1]["name"].replace('_assembly', '_assembled'), file = doc_file)
|
||||||
if not re.search(r'\!\[.*\]\(.*\)', blurbs[0], re.MULTILINE):
|
eop(doc_file, first = True)
|
||||||
print('![Main Assembly](assemblies/%s.png)\n' % flat_bom[-1]["name"].replace('_assembly', '_assembled'), file = doc_file)
|
#
|
||||||
eop(print_mode, doc_file, first = True)
|
# Build TOC
|
||||||
#
|
#
|
||||||
# Build TOC
|
print('## Table of Contents', file = doc_file)
|
||||||
#
|
print('1. [Parts list](#Parts_list)', file = doc_file)
|
||||||
print('## Table of Contents', file = doc_file)
|
for ass in flat_bom:
|
||||||
print('1. [Parts list](#Parts_list)', file = doc_file)
|
name = ass["name"]
|
||||||
for ass in flat_bom:
|
cap_name = titalise(name)
|
||||||
name = ass["name"]
|
print('1. [%s](#%s)' % (cap_name, name), file = doc_file)
|
||||||
cap_name = titalise(name)
|
print(file = doc_file)
|
||||||
print('1. [%s](#%s)' % (cap_name, name), file = doc_file)
|
if len(blurbs) > 1:
|
||||||
print(file = doc_file)
|
print(blurbs[1], file = doc_file)
|
||||||
if len(blurbs) > 1:
|
eop(doc_file)
|
||||||
print(blurbs[1], file = doc_file)
|
#
|
||||||
eop(print_mode, doc_file)
|
# Global BOM
|
||||||
#
|
#
|
||||||
# Global BOM
|
print('<a name="Parts_list"></a>\n## Parts list', file = doc_file)
|
||||||
#
|
types = ["vitamins", "printed", "routed"]
|
||||||
print('<a name="Parts_list"></a>\n## Parts list', file = doc_file)
|
headings = {"vitamins" : "vitamins", "printed" : "3D printed parts", "routed" : "CNC routed parts"}
|
||||||
types = ["vitamins", "printed", "routed"]
|
things = {}
|
||||||
headings = {"vitamins" : "vitamins", "printed" : "3D printed parts", "routed" : "CNC routed parts"}
|
for t in types:
|
||||||
things = {}
|
things[t] = {}
|
||||||
|
for ass in flat_bom:
|
||||||
for t in types:
|
for t in types:
|
||||||
things[t] = {}
|
for thing in ass[t]:
|
||||||
for ass in flat_bom:
|
if thing in things[t]:
|
||||||
for t in types:
|
things[t][thing] += ass[t][thing]["count"]
|
||||||
for thing in ass[t]:
|
else:
|
||||||
if thing in things[t]:
|
things[t][thing] = ass[t][thing]["count"]
|
||||||
things[t][thing] += ass[t][thing]["count"]
|
for ass in flat_bom:
|
||||||
else:
|
name = titalise(ass["name"][:-9]).replace(' ',' ')
|
||||||
things[t][thing] = ass[t][thing]["count"]
|
print('| <span style="writing-mode: vertical-rl; text-orientation: mixed;">%s</span> ' % name, file = doc_file, end = '')
|
||||||
for ass in flat_bom:
|
print('| <span style="writing-mode: vertical-rl; text-orientation: mixed;">TOTALS</span> | |', file = doc_file)
|
||||||
name = titalise(ass["name"][:-9]).replace(' ',' ')
|
print(('|---:' * len(flat_bom) + '|---:|:---|'), file = doc_file)
|
||||||
print('| <span style="writing-mode: vertical-rl; text-orientation: mixed;">%s</span> ' % name, file = doc_file, end = '')
|
|
||||||
print('| <span style="writing-mode: vertical-rl; text-orientation: mixed;">TOTALS</span> | |', file = doc_file)
|
|
||||||
print(('|---:' * len(flat_bom) + '|---:|:---|'), file = doc_file)
|
|
||||||
|
|
||||||
for t in types:
|
for t in types:
|
||||||
if things[t]:
|
if things[t]:
|
||||||
totals = {}
|
totals = {}
|
||||||
heading = headings[t][0:1].upper() + headings[t][1:]
|
heading = headings[t][0:1].upper() + headings[t][1:]
|
||||||
print(('| ' * len(flat_bom) + '| | **%s** |') % heading, file = doc_file)
|
print(('| ' * len(flat_bom) + '| | **%s** |') % heading, file = doc_file)
|
||||||
for thing in sorted(things[t], key = lambda s: s.split(":")[-1]):
|
for thing in sorted(things[t], key = lambda s: s.split(":")[-1]):
|
||||||
for ass in flat_bom:
|
|
||||||
count = ass[t][thing]["count"] if thing in ass[t] else 0
|
|
||||||
print('| %s ' % pad(count if count else '.', 2, 1), file = doc_file, end = '')
|
|
||||||
name = ass["name"]
|
|
||||||
if name in totals:
|
|
||||||
totals[name] += count
|
|
||||||
else:
|
|
||||||
totals[name] = count
|
|
||||||
print('| %s | %s |' % (pad(things[t][thing], 2, 1), pad(thing.split(":")[-1], 2)), file = doc_file)
|
|
||||||
|
|
||||||
grand_total = 0
|
|
||||||
for ass in flat_bom:
|
for ass in flat_bom:
|
||||||
|
count = ass[t][thing]["count"] if thing in ass[t] else 0
|
||||||
|
print('| %s ' % pad(count if count else '.', 2, 1), file = doc_file, end = '')
|
||||||
name = ass["name"]
|
name = ass["name"]
|
||||||
total = totals[name] if name in totals else 0
|
if name in totals:
|
||||||
print('| %s ' % pad(total if total else '.', 2, 1), file = doc_file, end = '')
|
totals[name] += count
|
||||||
grand_total += total
|
else:
|
||||||
print("| %s | %s |" % (pad(grand_total, 2, 1), pad('Total %s count' % headings[t], 2)), file = doc_file)
|
totals[name] = count
|
||||||
print(file = doc_file)
|
print('| %s | %s |' % (pad(things[t][thing], 2, 1), pad(thing.split(":")[-1], 2)), file = doc_file)
|
||||||
if len(blurbs) > 2:
|
|
||||||
print(blurbs[2], file = doc_file)
|
|
||||||
eop(print_mode, doc_file)
|
|
||||||
#
|
|
||||||
# Assembly instructions
|
|
||||||
#
|
|
||||||
for ass in flat_bom:
|
|
||||||
name = ass["name"]
|
|
||||||
cap_name = titalise(name)
|
|
||||||
|
|
||||||
print('<a name="%s"></a>' % name, file = doc_file)
|
grand_total = 0
|
||||||
if ass["count"] > 1:
|
for ass in flat_bom:
|
||||||
print('## %d x %s' % (ass["count"], cap_name), file = doc_file)
|
name = ass["name"]
|
||||||
else:
|
total = totals[name] if name in totals else 0
|
||||||
print('## %s' % cap_name, file = doc_file)
|
print('| %s ' % pad(total if total else '.', 2, 1), file = doc_file, end = '')
|
||||||
vitamins = ass["vitamins"]
|
grand_total += total
|
||||||
if vitamins:
|
print("| %s | %s |" % (pad(grand_total, 2, 1), pad('Total %s count' % headings[t], 2)), file = doc_file)
|
||||||
print("### Vitamins", file = doc_file)
|
print(file = doc_file)
|
||||||
print("|Qty|Description|", file = doc_file)
|
if len(blurbs) > 2:
|
||||||
print("|---:|:----------|", file = doc_file)
|
print(blurbs[2], file = doc_file)
|
||||||
for v in sorted(vitamins, key = lambda s: s.split(":")[-1]):
|
eop(doc_file)
|
||||||
print("|%d|%s|" % (vitamins[v]["count"], v.split(":")[1]), file = doc_file)
|
|
||||||
print("\n", file = doc_file)
|
|
||||||
|
|
||||||
printed = ass["printed"]
|
|
||||||
if printed:
|
|
||||||
print('### 3D Printed parts', file = doc_file)
|
|
||||||
keys = sorted(list(printed.keys()))
|
|
||||||
for i, p in enumerate(keys):
|
|
||||||
print('%s %d x %s |' % ('\n|' if not (i % 3) else '', printed[p]["count"], p), file = doc_file, end = '')
|
|
||||||
if (i % 3) == 2 or i == len(printed) - 1:
|
|
||||||
n = (i % 3) + 1
|
|
||||||
print('\n|%s' % ('---|' * n), file = doc_file)
|
|
||||||
for j in range(n):
|
|
||||||
part = keys[i - n + j + 1]
|
|
||||||
print('| ![%s](stls/%s) %s' % (part, part.replace('.stl','.png'), '|\n' if j == j - 1 else ''), end = '', file = doc_file)
|
|
||||||
print('\n', file = doc_file)
|
|
||||||
print('\n', file = doc_file)
|
|
||||||
|
|
||||||
routed = ass["routed"]
|
|
||||||
if routed:
|
|
||||||
print("### CNC Routed parts", file = doc_file)
|
|
||||||
keys = sorted(list(routed.keys()))
|
|
||||||
for i, r in enumerate(keys):
|
|
||||||
print('%s %d x %s |' % ('\n|' if not (i % 3) else '', routed[r]["count"], r), file = doc_file, end = '')
|
|
||||||
if (i % 3) == 2 or i == len(routed) - 1:
|
|
||||||
n = (i % 3) + 1
|
|
||||||
print('\n|%s' % ('---|' * n), file = doc_file)
|
|
||||||
for j in range(n):
|
|
||||||
part = keys[i - n + j + 1]
|
|
||||||
print('| ![%s](dxfs/%s) %s' % (part, part.replace('.dxf','.png'), '|\n' if j == j - 1 else ''), end = '', file = doc_file)
|
|
||||||
print('\n', file = doc_file)
|
|
||||||
print('\n', file = doc_file)
|
|
||||||
|
|
||||||
sub_assemblies = ass["assemblies"]
|
|
||||||
if sub_assemblies:
|
|
||||||
print("### Sub-assemblies", file = doc_file)
|
|
||||||
keys = sorted(list(sub_assemblies.keys()))
|
|
||||||
for i, a in enumerate(keys):
|
|
||||||
print('%s %d x %s |' % ('\n|' if not (i % 3) else '', sub_assemblies[a], a), file = doc_file, end = '')
|
|
||||||
if (i % 3) == 2 or i == len(keys) - 1:
|
|
||||||
n = (i % 3) + 1
|
|
||||||
print('\n|%s' % ('---|' * n), file = doc_file)
|
|
||||||
for j in range(n):
|
|
||||||
a = keys[i - n + j + 1].replace('_assembly', '_assembled')
|
|
||||||
print('| ![%s](assemblies/%s) %s' % (a, a + '_tn.png', '|\n' if j == j - 1 else ''), end = '', file = doc_file)
|
|
||||||
print('\n', file = doc_file)
|
|
||||||
print('\n', file = doc_file)
|
|
||||||
|
|
||||||
small = not ass["big"]
|
|
||||||
suffix = '_tn.png' if small else '.png'
|
|
||||||
print('### Assembly instructions', file = doc_file)
|
|
||||||
print('![%s](assemblies/%s)\n' % (name, name + suffix), file = doc_file)
|
|
||||||
|
|
||||||
if "blurb" in ass and ass["blurb"]:
|
|
||||||
print(ass["blurb"], file = doc_file)
|
|
||||||
else:
|
|
||||||
if print_mode:
|
|
||||||
print(Fore.MAGENTA + "Missing instructions for %s" % name, Fore.WHITE)
|
|
||||||
|
|
||||||
name = name.replace('_assembly', '_assembled')
|
|
||||||
print('![%s](assemblies/%s)\n' % (name, name + suffix), file = doc_file)
|
|
||||||
eop(print_mode, doc_file, last = ass == flat_bom[-1] and not main_blurb)
|
|
||||||
#
|
|
||||||
# If main module is suppressed print any blurb here
|
|
||||||
#
|
|
||||||
if main_blurb:
|
|
||||||
print(main_blurb, file = doc_file)
|
|
||||||
eop(print_mode, doc_file, last = True)
|
|
||||||
#
|
#
|
||||||
# Convert to HTML
|
# Assembly instructions
|
||||||
#
|
#
|
||||||
html_name = "printme.html" if print_mode else "readme.html"
|
for ass in flat_bom:
|
||||||
t = time.time()
|
name = ass["name"]
|
||||||
with open(top_dir + html_name, "wt") as html_file:
|
cap_name = titalise(name)
|
||||||
do_cmd(("python -m markdown -x tables -x sane_lists " + doc_name).split(), html_file)
|
|
||||||
times.add_time(top_dir + html_name, t)
|
print('<a name="%s"></a>' % name, file = doc_file)
|
||||||
|
if ass["count"] > 1:
|
||||||
|
print('## %d x %s' % (ass["count"], cap_name), file = doc_file)
|
||||||
|
else:
|
||||||
|
print('## %s' % cap_name, file = doc_file)
|
||||||
|
vitamins = ass["vitamins"]
|
||||||
|
if vitamins:
|
||||||
|
print("### Vitamins", file = doc_file)
|
||||||
|
print("|Qty|Description|", file = doc_file)
|
||||||
|
print("|---:|:----------|", file = doc_file)
|
||||||
|
for v in sorted(vitamins, key = lambda s: s.split(":")[-1]):
|
||||||
|
print("|%d|%s|" % (vitamins[v]["count"], v.split(":")[1]), file = doc_file)
|
||||||
|
print("\n", file = doc_file)
|
||||||
|
|
||||||
|
printed = ass["printed"]
|
||||||
|
if printed:
|
||||||
|
print('### 3D Printed parts', file = doc_file)
|
||||||
|
keys = sorted(list(printed.keys()))
|
||||||
|
for i, p in enumerate(keys):
|
||||||
|
print('%s %d x %s |' % ('\n|' if not (i % 3) else '', printed[p]["count"], p), file = doc_file, end = '')
|
||||||
|
if (i % 3) == 2 or i == len(printed) - 1:
|
||||||
|
n = (i % 3) + 1
|
||||||
|
print('\n|%s' % ('---|' * n), file = doc_file)
|
||||||
|
for j in range(n):
|
||||||
|
part = keys[i - n + j + 1]
|
||||||
|
print('| ![%s](stls/%s) %s' % (part, part.replace('.stl','.png'), '|\n' if j == j - 1 else ''), end = '', file = doc_file)
|
||||||
|
print('\n', file = doc_file)
|
||||||
|
print('\n', file = doc_file)
|
||||||
|
|
||||||
|
routed = ass["routed"]
|
||||||
|
if routed:
|
||||||
|
print("### CNC Routed parts", file = doc_file)
|
||||||
|
keys = sorted(list(routed.keys()))
|
||||||
|
for i, r in enumerate(keys):
|
||||||
|
print('%s %d x %s |' % ('\n|' if not (i % 3) else '', routed[r]["count"], r), file = doc_file, end = '')
|
||||||
|
if (i % 3) == 2 or i == len(routed) - 1:
|
||||||
|
n = (i % 3) + 1
|
||||||
|
print('\n|%s' % ('---|' * n), file = doc_file)
|
||||||
|
for j in range(n):
|
||||||
|
part = keys[i - n + j + 1]
|
||||||
|
print('| ![%s](dxfs/%s) %s' % (part, part.replace('.dxf','.png'), '|\n' if j == j - 1 else ''), end = '', file = doc_file)
|
||||||
|
print('\n', file = doc_file)
|
||||||
|
print('\n', file = doc_file)
|
||||||
|
|
||||||
|
sub_assemblies = ass["assemblies"]
|
||||||
|
if sub_assemblies:
|
||||||
|
print("### Sub-assemblies", file = doc_file)
|
||||||
|
keys = sorted(list(sub_assemblies.keys()))
|
||||||
|
for i, a in enumerate(keys):
|
||||||
|
print('%s %d x %s |' % ('\n|' if not (i % 3) else '', sub_assemblies[a], a), file = doc_file, end = '')
|
||||||
|
if (i % 3) == 2 or i == len(keys) - 1:
|
||||||
|
n = (i % 3) + 1
|
||||||
|
print('\n|%s' % ('---|' * n), file = doc_file)
|
||||||
|
for j in range(n):
|
||||||
|
a = keys[i - n + j + 1].replace('_assembly', '_assembled')
|
||||||
|
print('| ![%s](assemblies/%s) %s' % (a, a + '_tn.png', '|\n' if j == j - 1 else ''), end = '', file = doc_file)
|
||||||
|
print('\n', file = doc_file)
|
||||||
|
print('\n', file = doc_file)
|
||||||
|
|
||||||
|
small = not ass["big"]
|
||||||
|
suffix = '_tn.png' if small else '.png'
|
||||||
|
print('### Assembly instructions', file = doc_file)
|
||||||
|
print('![%s](assemblies/%s)\n' % (name, name + suffix), file = doc_file)
|
||||||
|
|
||||||
|
if "blurb" in ass and ass["blurb"]:
|
||||||
|
print(ass["blurb"], file = doc_file)
|
||||||
|
else:
|
||||||
|
print(Fore.MAGENTA + "Missing instructions for %s" % name, Fore.WHITE)
|
||||||
|
|
||||||
|
name = name.replace('_assembly', '_assembled')
|
||||||
|
print('![%s](assemblies/%s)\n' % (name, name + suffix), file = doc_file)
|
||||||
|
eop(doc_file, last = ass == flat_bom[-1] and not main_blurb)
|
||||||
|
#
|
||||||
|
# If main module is suppressed print any blurb here
|
||||||
|
#
|
||||||
|
if main_blurb:
|
||||||
|
print(main_blurb, file = doc_file)
|
||||||
|
eop(doc_file, last = True)
|
||||||
|
#
|
||||||
|
# Convert to HTML
|
||||||
|
#
|
||||||
|
html_name = 'readme.html'
|
||||||
|
t = time.time()
|
||||||
|
with open(top_dir + html_name, "wt") as html_file:
|
||||||
|
do_cmd(("python -m markdown -x tables -x sane_lists " + doc_name).split(), html_file)
|
||||||
|
times.add_time(top_dir + html_name, t)
|
||||||
times.print_times()
|
times.print_times()
|
||||||
#
|
#
|
||||||
|
# Make the printme.html by replacing empty spans that invisbly mark the page breaks by page break divs.
|
||||||
|
#
|
||||||
|
with open(top_dir + 'readme.html', 'rt') as src:
|
||||||
|
lines = src.readlines()
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
with open(top_dir + 'printme.html', 'wt') as dst:
|
||||||
|
while i < len(lines):
|
||||||
|
line = lines[i]
|
||||||
|
if line.startswith('<p><span></span>'): # Empty span used to mark page breaks
|
||||||
|
i += 1
|
||||||
|
if lines[i].startswith('<a href="#TOP">Top</a>'): # The first page break won't have one
|
||||||
|
i += 1
|
||||||
|
if i < len(lines) and lines[i] == '<hr />\n': # The last page break doesn't have one
|
||||||
|
dst.write('<div style="page-break-after: always;"></div>\n')
|
||||||
|
i += 1
|
||||||
|
else:
|
||||||
|
dst.write(line)
|
||||||
|
i += 1
|
||||||
|
#
|
||||||
# Spell check
|
# Spell check
|
||||||
#
|
#
|
||||||
do_cmd(('codespell -L od ' + top_dir + 'readme.md').split())
|
do_cmd(('codespell -L od ' + top_dir + 'readme.md').split())
|
||||||
|
|
Loading…
Reference in New Issue