diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index c2ce5de..29d0e0b 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -288,6 +288,46 @@ class Harness: data.seek(0) return data.read() + @property + def html(self): + self.create_graph() + + bom_list = self.bom_list() + string = '' + + string += '\n' + string += f'' + + string += '

Diagram

' + + svg = self.svg.decode('utf-8') + svg = re.sub( + '^<[?]xml [^?>]*[?]>[^<]*]*>', + '', + svg) + for svgdata in svg: + string += svgdata + + string += '

Bill of Materials

' + listy = flatten2d(bom_list) + string += '' + string += '' + for item in listy[0]: + string += f'' + string += '' + for row in listy[1:]: + string += '' + for i, item in enumerate(row): + item_str = item.replace('\u00b2', '²') + align = 'align="right"' if listy[0][i] == 'Qty' else '' + string += f'' + string += '' + string += '
{item}
{item_str}
' + + string += '' + + return bytes(string, encoding='utf-8') + def output(self, filename: (str, Path), view: bool = False, cleanup: bool = True, fmt: tuple = ('pdf', )) -> None: # graphical output graph = self.create_graph() diff --git a/src/wireviz/bom_helper.py b/src/wireviz/bom_helper.py index 218b413..2bcc27c 100644 --- a/src/wireviz/bom_helper.py +++ b/src/wireviz/bom_helper.py @@ -26,6 +26,7 @@ _tsv_formats = { EXCEL_TSV, WIREVIZ_TSV } _csv_ext = '.bom.csv' _tsv_ext = '.bom.tsv' + def generate_bom_outputs(base_filename, bomdata, formats=None): if formats is None: formats = [EXCEL_CSV, WIREVIZ_TSV] diff --git a/src/wireviz/wireviz.py b/src/wireviz/wireviz.py index 04814f2..e6aed08 100755 --- a/src/wireviz/wireviz.py +++ b/src/wireviz/wireviz.py @@ -181,6 +181,8 @@ def parse(yaml_input: str, file_out: (str, Path) = None, return_types: (None, st returns.append(harness.png) if rt == 'svg': returns.append(harness.svg) + if rt == 'html': + returns.append(harness.html) if rt == 'harness': returns.append(harness)