Generalize metadata filling, change placeholder syntax
This commit is contained in:
parent
14565ec8f5
commit
b3e47e148a
107
src/wireviz/templates/din-6771.html
generated
107
src/wireviz/templates/din-6771.html
generated
@ -1,9 +1,10 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||||
<meta name="generator" content="<!-- generator -->">
|
<meta name="generator" content="<!-- %generator% -->">
|
||||||
<title><!-- title --></title>
|
<title><!-- %title% --></title>
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
font-family: Arial;
|
font-family: Arial;
|
||||||
@ -183,90 +184,90 @@
|
|||||||
<div id="frame" class="sheetsize_default">
|
<div id="frame" class="sheetsize_default">
|
||||||
|
|
||||||
<div id="diagram">
|
<div id="diagram">
|
||||||
<!-- diagram -->
|
<!-- %diagram% -->
|
||||||
|
|
||||||
<div id="description">
|
<div id="description">
|
||||||
<!-- description -->
|
<!-- %description% -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="notes">
|
<div id="notes">
|
||||||
<!-- notes -->
|
<!-- %notes% -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="bom">
|
<div id="bom">
|
||||||
<!-- bom_reversed -->
|
<!-- %bom_reversed% -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="titleblock">
|
<div id="titleblock">
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="revno"><!-- rev_8_number --></td>
|
<td class="revno"><!-- %rev_8_number% --></td>
|
||||||
<td class="changelog"><!-- rev_8_changelog --></td>
|
<td class="changelog"><!-- %rev_8_changelog% --></td>
|
||||||
<td class="date"><!-- rev_8_date --></td>
|
<td class="date"><!-- %rev_8_date% --></td>
|
||||||
<td class="name"><!-- rev_8_name --></td>
|
<td class="name"><!-- %rev_8_name% --></td>
|
||||||
<td class="process"></td>
|
<td class="process"></td>
|
||||||
<td class="date">Date</td>
|
<td class="date">Date</td>
|
||||||
<td class="name">Name</td>
|
<td class="name">Name</td>
|
||||||
<td class="title" colspan="3" rowspan="5"><!-- title --></td>
|
<td class="title" colspan="3" rowspan="5"><!-- %title% --></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="revno"><!-- rev_7_number --></td>
|
<td class="revno"><!-- %rev_7_number% --></td>
|
||||||
<td><!-- rev_7_changelog --></td>
|
<td><!-- %rev_7_changelog% --></td>
|
||||||
<td><!-- rev_7_date --></td>
|
<td><!-- %rev_7_date% --></td>
|
||||||
<td><!-- rev_7_name --></td>
|
<td><!-- %rev_7_name% --></td>
|
||||||
<td><!-- process_1_title --></td>
|
<td><!-- %process_1_title% --></td>
|
||||||
<td><!-- process_1_date --></td>
|
<td><!-- %process_1_date% --></td>
|
||||||
<td><!-- process_1_name --></td>
|
<td><!-- %process_1_name% --></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="revno"><!-- rev_6_number --></td>
|
<td class="revno"><!-- %rev_6_number% --></td>
|
||||||
<td><!-- rev_6_changelog --></td>
|
<td><!-- %rev_6_changelog% --></td>
|
||||||
<td><!-- rev_6_date --></td>
|
<td><!-- %rev_6_date% --></td>
|
||||||
<td><!-- rev_6_name --></td>
|
<td><!-- %rev_6_name% --></td>
|
||||||
<td><!-- process_2_title --></td>
|
<td><!-- %process_2_title% --></td>
|
||||||
<td><!-- process_2_date --></td>
|
<td><!-- %process_2_date% --></td>
|
||||||
<td><!-- process_2_name --></td>
|
<td><!-- %process_2_name% --></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="revno"><!-- rev_5_number --></td>
|
<td class="revno"><!-- %rev_5_number% --></td>
|
||||||
<td><!-- rev_5_changelog --></td>
|
<td><!-- %rev_5_changelog% --></td>
|
||||||
<td><!-- rev_5_date --></td>
|
<td><!-- %rev_5_date% --></td>
|
||||||
<td><!-- rev_5_name --></td>
|
<td><!-- %rev_5_name% --></td>
|
||||||
<td><!-- process_3_title --></td>
|
<td><!-- %process_3_title% --></td>
|
||||||
<td><!-- process_3_date --></td>
|
<td><!-- %process_3_date% --></td>
|
||||||
<td><!-- process_3_name --></td>
|
<td><!-- %process_3_name% --></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="revno"><!-- rev_4_number --></td>
|
<td class="revno"><!-- %rev_4_number% --></td>
|
||||||
<td><!-- rev_4_changelog --></td>
|
<td><!-- %rev_4_changelog% --></td>
|
||||||
<td><!-- rev_4_date --></td>
|
<td><!-- %rev_4_date% --></td>
|
||||||
<td><!-- rev_4_name --></td>
|
<td><!-- %rev_4_name% --></td>
|
||||||
<td colspan="2"></td>
|
<td colspan="2"></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="revno"><!-- rev_3_number --></td>
|
<td class="revno"><!-- %rev_3_number% --></td>
|
||||||
<td><!-- rev_3_changelog --></td>
|
<td><!-- %rev_3_changelog% --></td>
|
||||||
<td><!-- rev_3_date --></td>
|
<td><!-- %rev_3_date% --></td>
|
||||||
<td><!-- rev_3_name --></td>
|
<td><!-- %rev_3_name% --></td>
|
||||||
<td class="company" colspan="3" rowspan="3"><!-- company --></td>
|
<td class="company" colspan="3" rowspan="3"><!-- %company% --></td>
|
||||||
<td class="partno" colspan="2" rowspan="3"><!-- pn --></td>
|
<td class="partno" colspan="2" rowspan="3"><!-- %pn% --></td>
|
||||||
<td class="sheetno" rowspan="2"><!-- sheet_current --></td>
|
<td class="sheetno" rowspan="2"><!-- %sheet_current% --></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="revno"><!-- rev_2_number --></td>
|
<td class="revno"><!-- %rev_2_number% --></td>
|
||||||
<td><!-- rev_2_changelog --></td>
|
<td><!-- %rev_2_changelog% --></td>
|
||||||
<td><!-- rev_2_date --></td>
|
<td><!-- %rev_2_date% --></td>
|
||||||
<td><!-- rev_2_name --></td>
|
<td><!-- %rev_2_name% --></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="revno"><!-- rev_1_number --></td>
|
<td class="revno"><!-- %rev_1_number% --></td>
|
||||||
<td><!-- rev_1_changelog --></td>
|
<td><!-- %rev_1_changelog% --></td>
|
||||||
<td><!-- rev_1_date --></td>
|
<td><!-- %rev_1_date% --></td>
|
||||||
<td><!-- rev_1_name --></td>
|
<td><!-- %rev_1_name% --></td>
|
||||||
<td class="sheetno"><!-- sheet_total --></td>
|
<td class="sheetno"><!-- %sheet_total% --></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Rev</td>
|
<td>Rev</td>
|
||||||
|
|||||||
14
src/wireviz/templates/simple.html
generated
14
src/wireviz/templates/simple.html
generated
@ -1,8 +1,8 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en"><head>
|
<html lang="en"><head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="generator" content="<!-- generator -->">
|
<meta name="generator" content="<!-- %generator% -->">
|
||||||
<title>WireViz Demo 01</title>
|
<title><!-- %title% --></title>
|
||||||
<style>
|
<style>
|
||||||
|
|
||||||
#bom table, th, td {
|
#bom table, th, td {
|
||||||
@ -21,25 +21,25 @@
|
|||||||
|
|
||||||
</style>
|
</style>
|
||||||
</head><body style="font-family:arial;background-color:#FFFFFF">
|
</head><body style="font-family:arial;background-color:#FFFFFF">
|
||||||
<h1>WireViz Demo 01</h1>
|
<h1><!-- %title% --></h1>
|
||||||
<h2>Diagram</h2>
|
<h2>Diagram</h2>
|
||||||
|
|
||||||
<div id="description">
|
<div id="description">
|
||||||
<!-- description -->
|
<!-- %description% -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="diagram">
|
<div id="diagram">
|
||||||
<!-- diagram -->
|
<!-- %diagram% -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="notes">
|
<div id="notes">
|
||||||
<!-- notes -->
|
<!-- %notes% -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2>Bill of Materials</h2>
|
<h2>Bill of Materials</h2>
|
||||||
|
|
||||||
<div id="bom">
|
<div id="bom">
|
||||||
<!-- bom -->
|
<!-- %bom% -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body></html>
|
</body></html>
|
||||||
|
|||||||
@ -29,7 +29,7 @@ def generate_html_output(filename: Union[str, Path], bom_list: List[List[str]],
|
|||||||
'^<[?]xml [^?>]*[?]>[^<]*<!DOCTYPE [^>]*>',
|
'^<[?]xml [^?>]*[?]>[^<]*<!DOCTYPE [^>]*>',
|
||||||
'<!-- XML and DOCTYPE declarations from SVG file removed -->',
|
'<!-- XML and DOCTYPE declarations from SVG file removed -->',
|
||||||
svgdata, 1)
|
svgdata, 1)
|
||||||
html = html.replace('<!-- diagram -->', svgdata)
|
html = html.replace('<!-- %diagram% -->', svgdata)
|
||||||
|
|
||||||
# generate BOM table
|
# generate BOM table
|
||||||
bom = flatten2d(bom_list)
|
bom = flatten2d(bom_list)
|
||||||
@ -55,42 +55,48 @@ def generate_html_output(filename: Union[str, Path], bom_list: List[List[str]],
|
|||||||
bom_html_reversed = '<table>\n' + ''.join(list(reversed(bom_contents))) + bom_header_html + '</table>\n'
|
bom_html_reversed = '<table>\n' + ''.join(list(reversed(bom_contents))) + bom_header_html + '</table>\n'
|
||||||
|
|
||||||
# insert BOM table
|
# insert BOM table
|
||||||
html = html.replace('<!-- bom -->', bom_html)
|
html = html.replace('<!-- %bom% -->', bom_html)
|
||||||
html = html.replace('<!-- bom_reversed -->', bom_html_reversed)
|
html = html.replace('<!-- %bom_reversed% -->', bom_html_reversed)
|
||||||
|
|
||||||
# fill out title block
|
# insert other metadata
|
||||||
if metadata:
|
if metadata:
|
||||||
html = html.replace('<!-- title -->', metadata.get('title', ''))
|
|
||||||
html = html.replace('<!-- pn -->', metadata.get('pn', ''))
|
|
||||||
html = html.replace('<!-- company -->', metadata.get('company', ''))
|
|
||||||
html = html.replace('<!-- description -->', html_line_breaks(metadata.get('description', '')))
|
|
||||||
html = html.replace('<!-- notes -->', html_line_breaks(metadata.get('notes', '')))
|
|
||||||
html = html.replace('<!-- generator -->', f'{APP_NAME} {__version__} - {APP_URL}')
|
|
||||||
|
|
||||||
# TODO: handle multi-page documents
|
html = html.replace('<!-- %generator% -->', f'{APP_NAME} {__version__} - {APP_URL}')
|
||||||
html = html.replace('<!-- sheet_current -->', 'Sheet<br />1')
|
|
||||||
html = html.replace('<!-- sheet_total -->', 'of 1')
|
|
||||||
|
|
||||||
|
# fill out authors
|
||||||
for i, (k, v) in enumerate(metadata.get('authors', {}).items(), 1):
|
for i, (k, v) in enumerate(metadata.get('authors', {}).items(), 1):
|
||||||
title = k
|
title = k
|
||||||
name = v['name']
|
name = v['name']
|
||||||
date = v['date'].strftime('%Y-%m-%d')
|
date = v['date'].strftime('%Y-%m-%d')
|
||||||
html = html.replace(f'<!-- process_{i}_title -->', title)
|
html = html.replace(f'<!-- %process_{i}_title% -->', title)
|
||||||
html = html.replace(f'<!-- process_{i}_name -->', name)
|
html = html.replace(f'<!-- %process_{i}_name% -->', name)
|
||||||
html = html.replace(f'<!-- process_{i}_date -->', date)
|
html = html.replace(f'<!-- %process_{i}_date% -->', date)
|
||||||
|
|
||||||
|
# fill out revisions
|
||||||
for i, (k, v) in enumerate(metadata.get('revisions', {}).items(), 1):
|
for i, (k, v) in enumerate(metadata.get('revisions', {}).items(), 1):
|
||||||
# TODO: for more than 8 revisions, keep only the 8 most recent ones
|
# TODO: for more than 8 revisions, keep only the 8 most recent ones
|
||||||
number = k
|
number = k
|
||||||
changelog = v['changelog']
|
changelog = v['changelog']
|
||||||
name = v['name']
|
name = v['name']
|
||||||
date = v['date'].strftime('%Y-%m-%d')
|
date = v['date'].strftime('%Y-%m-%d')
|
||||||
html = html.replace(f'<!-- rev_{i}_number -->', '{:02d}'.format(number))
|
html = html.replace(f'<!-- %rev_{i}_number% -->', '{:02d}'.format(number))
|
||||||
html = html.replace(f'<!-- rev_{i}_changelog -->', changelog)
|
html = html.replace(f'<!-- %rev_{i}_changelog% -->', changelog)
|
||||||
html = html.replace(f'<!-- rev_{i}_name -->', name)
|
html = html.replace(f'<!-- %rev_{i}_name% -->', name)
|
||||||
html = html.replace(f'<!-- rev_{i}_date -->', date)
|
html = html.replace(f'<!-- %rev_{i}_date% -->', date)
|
||||||
|
|
||||||
html = html.replace(f'"sheetsize_default"', '"{}"'.format(metadata.get('template',{}).get('sheetsize', ''))) # include quotes so no replacement happens within <style> definition
|
html = html.replace(f'"sheetsize_default"', '"{}"'.format(metadata.get('template',{}).get('sheetsize', ''))) # include quotes so no replacement happens within <style> definition
|
||||||
|
|
||||||
|
# TODO: handle multi-page documents
|
||||||
|
html = html.replace('<!-- %sheet_current% -->', 'Sheet<br />1')
|
||||||
|
html = html.replace('<!-- %sheet_total% -->', 'of 1')
|
||||||
|
|
||||||
|
# fill out other generic metadata
|
||||||
|
for k, v in metadata.items():
|
||||||
|
if isinstance(v, (str, int, float)):
|
||||||
|
html = html.replace(f'<!-- %{k}% -->', v)
|
||||||
|
# TODO: Support smart handling of lists and dicts?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
with open(f'{filename}.html','w') as file:
|
with open(f'{filename}.html','w') as file:
|
||||||
file.write(html)
|
file.write(html)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user