#!/usr/bin/env python # -*- coding: utf-8 -*- from pathlib import Path from typing import List, Union import re from wireviz import __version__, APP_NAME, APP_URL 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') if metadata.description: file.write(f'

{metadata.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') if metadata.notes: file.write(f'

Notes

\n

{metadata.notes}

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