# -*- 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' \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' \n') file.write(' \n') file.write('
{item}
{item_str}
\n') notes = metadata.get('notes') if notes: file.write(f'

Notes

\n

{notes}

\n') file.write('\n')