# -*- coding: utf-8 -*-
from pathlib import Path
from typing import List, Union
import re
from wireviz import __version__, APP_NAME, APP_URL, wv_colors
from wireviz.DataClasses import Metadata, Options
from wireviz.wv_helper import flatten2d, open_file_read, open_file_write
def generate_html_output(filename: Union[str, Path], bom_list: List[List[str]], metadata: Metadata, options: Options):
with open_file_write(f'{filename}.html') as file:
file.write('\n')
file.write('
\n')
file.write(' \n')
file.write(f' \n')
file.write(f' {metadata["title"]}\n')
file.write(f'\n')
file.write(f'{metadata["title"]}
\n')
description = metadata.get('description')
if description:
file.write(f'{description}
\n')
file.write('Diagram
\n')
with open_file_read(f'{filename}.svg') as svg:
file.write(re.sub(
'^<[?]xml [^?>]*[?]>[^<]*]*>',
'',
svg.read(1024), 1))
for svgdata in svg:
file.write(svgdata)
file.write('Bill of Materials
\n')
listy = flatten2d(bom_list)
file.write('\n')
file.write(' \n')
for item in listy[0]:
file.write(f' | {item} | \n')
file.write('
\n')
for row in listy[1:]:
file.write(' \n')
for i, item in enumerate(row):
item_str = item.replace('\u00b2', '²')
align = '; text-align:right' if listy[0][i] == 'Qty' else ''
file.write(f' | {item_str} | \n')
file.write('
\n')
file.write('
\n')
notes = metadata.get('notes')
if notes:
file.write(f'Notes
\n{notes}
\n')
file.write('\n')