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